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

查询所有AD组成员遇请求大小限制错误,求解决办法

AD组查询"大小限制超出"错误的解决办法

这个错误是因为Active Directory默认限制单个查询返回的对象数量(默认1000条),当目标组的成员数超过这个阈值时,Get-ADGroupMember就会触发该报错。以下是几种可行的解决方法:

方法1:最小化修改原代码

直接给Get-ADGroupMember添加-ResultSetSize $null参数,取消AD的查询大小限制,让命令返回所有成员:

$Groups = Get-ADGroup -Filter {GroupScope -eq 'Global' -and Members -ne "NULL"}
$Users = foreach( $Group in $Groups ){
    # 添加-ResultSetSize $null取消大小限制
    Get-ADGroupMember -Identity $Group -ResultSetSize $null | foreach {
        [PSCustomObject]@{
            Group = $Group.Name
            UserName = $_.SamAccountName
        }
    }
}
$Users | Export-CSV C:\scripts\groups.csv -NoTypeInformation   

方法2:批量查询成员(更高效,适合超大组)

通过Get-ADGroup直接获取组的Members属性(成员的DN列表),再用Get-ADObject批量查询成员信息,这种方式更高效,也能绕过大小限制:

# 如需限定特定OU,添加-SearchBase参数,示例:-SearchBase "OU=你的目标OU,DC=domain,DC=com"
$Groups = Get-ADGroup -Filter {GroupScope -eq 'Global'} -Properties Members

$Users = foreach ($Group in $Groups) {
    # 跳过没有成员的组
    if (-not $Group.Members) { continue }
    
    # 批量获取成员对象,-ResultSetSize $null取消大小限制
    $members = Get-ADObject -Identity $Group.Members -ResultSetSize $null -Properties SamAccountName
    
    foreach ($member in $members) {
        [PSCustomObject]@{
            Group     = $Group.Name
            UserName  = $member.SamAccountName
            # 可选:添加对象类型,区分用户、组、计算机
            ObjectType = $member.ObjectClass
        }
    }
}

# 导出时指定UTF8编码,避免中文乱码
$Users | Export-CSV C:\scripts\groups.csv -NoTypeInformation -Encoding UTF8

注意事项

  • 原代码中的-Filter {Members -ne "NULL"}写法不够严谨,建议改为在循环内判断if (-not $Group.Members)跳过空成员组,避免漏判。
  • 如果查询范围是整个域,建议加上-SearchBase限定到目标OU,减少查询时间和资源占用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:52:45