获取AD安全组成员时排除计算机,执行脚本报错求助
解决AD安全组仅列出用户且避免计算机对象报错的问题
问题原因
你的脚本直接把Get-ADGroupMember返回的所有成员(包括用户和计算机)传给Get-ADUser,但Get-ADUser只能识别AD用户对象,计算机对象的身份信息无法被它解析,所以触发报错。
修改后的脚本
$GroupName = Read-Host -Prompt 'Enter the Group Name' Get-ADGroupMember -Identity $GroupName -Recursive | Where-Object {$_.ObjectClass -eq 'user'} | # 仅保留用户类型的成员 Get-ADUser -Properties Name,Mail,Title,Department | Sort-Object Department,Title,Name | Format-Table Name,Mail,Title,Department -AutoSize
关键说明
- 添加
Where-Object {$_.ObjectClass -eq 'user'}这一步,会过滤掉Get-ADGroupMember返回的计算机、组等非用户对象,确保只有用户对象进入后续的Get-ADUser处理流程,彻底避免报错。 - 如果需要确认成员类型,也可以先运行
Get-ADGroupMember -Identity $GroupName -Recursive | Select-Object Name, ObjectClass查看所有成员的类型,验证过滤逻辑是否生效。
内容的提问来源于stack exchange,提问作者Nelson Figueroa
相关产品推荐
相关产品推荐

