如何通过PowerShell筛选AD组ManagedBy属性为空的对象
PowerShell脚本调整方案(筛选无负责人的AD组)
直接在原有查询逻辑后增加空值过滤即可,同时建议替换原脚本的文本输出命令为专用CSV导出命令,避免格式错乱,调整后可直接运行的代码如下:
# 替换为你实际需要查询的目标OU路径 $test = 'OU=example,DC=example,DC=test' $test | ForEach-Object { Get-ADGroup -Filter * -Properties ManagedBy -SearchBase $_ } | # 核心过滤规则:仅保留ManagedBy字段为空的组对象 Where-Object { -not $_.ManagedBy } | Select-Object Name, ManagedBy | Sort-Object -Property Name | # 导出为标准CSV文件,指定UTF8编码避免乱码 Export-Csv C:\ADGroups_EmptyManagedBy.csv -NoTypeInformation -Encoding UTF8
关键修改说明:
- 新增
Where-Object { -not $_.ManagedBy }过滤段:直接判定ManagedBy属性是否为空,跳过所有已配置负责人的组,只保留目标对象 - 替换原脚本的
Out-File为Export-Csv:Out-File是纯文本导出命令,生成的文件不符合CSV格式规范,用专用的Export-Csv命令加-NoTypeInformation参数可以导出标准可直接用Excel打开的CSV文件,指定UTF8编码避免中文组名乱码 - 如果最终导出结果不需要保留空的ManagedBy列,把
Select-Object Name, ManagedBy修改为Select-Object Name即可,导出文件将仅包含组名一列
注意:运行脚本前请确保当前环境已加载Active Directory模块,域控服务器默认预装该模块,普通域内机器需提前安装RSAT套件中的AD管理组件,且账号拥有对应OU的AD查询权限。
内容的提问来源于stack exchange,提问作者Kelly Conger
相关产品推荐
相关产品推荐

