You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:编写Where-Object cmdlet筛选未加入指定组的AD组

解决PowerShell筛选未包含指定组作为所属组的AD组问题

原代码问题修正

你当前代码里的Format-Table Name会把Get-ADGroup返回的AD组对象转换成格式化输出对象,丢失了原有的属性(比如MemberOf),导致后续无法进行筛选判断,必须先去掉这一步,保留原始的AD组对象。

完整实现代码

# 指定要检查的目标组名称
$MissingGroupName = "gg-s-MissingGroup"
# 获取目标组的唯一标识DistinguishedName(避免名称重复导致误判)
$MissingGroupDN = (Get-ADGroup -Identity $MissingGroupName).DistinguishedName

# 获取所有名称匹配规则的AD组,同时加载MemberOf属性(默认不返回该属性)
$AllTargetGroups = Get-ADGroup -Filter 'Name -like "gg-s-*-Group"' -SearchBase "OU=xxxxxxx,DC=xxxxxxxxx,DC=xx" -Properties MemberOf

# 筛选出MemberOf中不包含目标组的AD组
$GroupsWithoutMissingGroup = $AllTargetGroups | Where-Object { $_.MemberOf -notcontains $MissingGroupDN }

# 按需输出结果,这里仅显示组名称
$GroupsWithoutMissingGroup | Format-Table Name

关键说明

  • 必须加载MemberOf属性:Get-ADGroup默认返回的属性集合里不包含MemberOf,需要通过-Properties MemberOf手动指定加载,才能判断组的所属关系。
  • 用DistinguishedName判断:AD中组名称可能存在重复,但DistinguishedName是每个对象的唯一标识,用它来匹配能避免误判。
  • 避免提前格式化:Format-*系列命令会改变对象类型,后续无法操作原对象的属性,所以要在筛选完成后再按需格式化输出。

内容的提问来源于stack exchange,提问作者cosmo_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:32:13