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

查询空AD组脚本异常:误返回含成员组问题求助

排查与修复AD空组提取脚本问题

问题根源

Domain Users、Domain Computers这类内置组的成员是动态计算的(比如Domain Users默认包含所有域用户对象),它们的Members属性并不会存储所有成员的DN,而是通过安全标识符(SID)隐式包含成员。你的脚本用-not $_.members判断时,这类组的Members集合可能为空(无显式添加的成员),因此被误判为空组。另外,部分大组可能因AD查询限制,Members属性未完整返回,也会导致误判。

修复后的脚本

方法1:通过实际查询成员验证(准确性高)

Get-ADGroup -Filter * | ForEach-Object {
    $memberCount = (Get-ADGroupMember -Identity $_ -ErrorAction SilentlyContinue).Count
    if ($memberCount -eq 0) {
        $_
    }
}

该方法会实际查询每个组的成员,能精准识别空组,但在组数量较多的场景下,执行速度较慢。

方法2:利用AD内置属性快速判断(效率高)

Get-ADGroup -Filter "memberCount -eq 0" -Properties memberCount

Windows Server 2008及以上的AD默认支持memberCount属性,它会统计组的实际成员数(包括隐式成员),既能避免内置组误判,又能大幅提升查询速度。

补充方案:排除特定内置组(仅临时应急)

如果坚持使用原脚本逻辑,可手动排除已知的特殊内置组,但该方法不通用,仅适用于临时场景:

Get-ADGroup -Filter * -Properties Members | Where-Object {
    -not $_.members -and $_.Name -notin @("Domain Users", "Domain Computers", "Domain Admins")
}

内容的提问来源于stack exchange,提问作者Newbie-PS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:09:53