请求大小超限,如何获取AD组所有用户?
解决AD组成员获取时的大小限制问题
你遇到的The size limit for this request was exceeded报错,是因为Get-ADGroupMember默认有5000条的结果集大小限制,当目标AD组的成员数量超过这个阈值时就会触发该提示。以下是几种可行的解决方法:
方法1:通过组的member属性批量获取(推荐)
这种方式绕过Get-ADGroupMember的限制,直接读取组的member属性获取所有成员的DN,再批量查询对象信息:
$Group1 = Read-Host "Enter the First AD Group" # 获取目标组的所有成员DN列表 $allMemberDNs = (Get-ADGroup -Identity $Group1 -Properties member).member # 遍历DN获取对应AD对象的属性并导出CSV $allMemberDNs | Get-ADObject -Properties SamAccountName, DisplayName, EmployeeID | Select-Object Name, DisplayName, EmployeeID | Export-Csv -Path C:\Users\user1\Desktop\ADGroupAudit\adgroup.csv -NoTypeInformation
如果需要递归获取嵌套组里的成员,需要额外添加递归逻辑处理嵌套的组对象。
方法2:取消Get-ADGroupMember的结果集限制
通过-ResultSetSize参数设置为$null来取消默认的5000条限制,不过部分域环境可能会因为管理员设置的全局限制而无法生效:
$Group1 = Read-Host "Enter the First AD Group" Get-ADGroupMember -Identity $Group1 -ResultSetSize $null | Get-ADObject -Properties SamAccountName, DisplayName, EmployeeID | Select-Object Name, DisplayName, EmployeeID | Export-Csv -Path C:\Users\user1\Desktop\ADGroupAudit\adgroup.csv -NoTypeInformation
方法3:用LDAP递归查询所有嵌套成员
如果需要一次性获取包括嵌套组在内的所有成员(仅用户对象),可以使用LDAP的递归过滤规则:
$Group1 = Read-Host "Enter the First AD Group" $groupDN = (Get-ADGroup -Identity $Group1).DistinguishedName # LDAP过滤条件实现递归查询所有成员 Get-ADUser -LDAPFilter "(memberOf:1.2.840.113556.1.4.1941:=$groupDN)" -Properties DisplayName, EmployeeID | Select-Object Name, DisplayName, EmployeeID | Export-Csv -Path C:\Users\user1\Desktop\ADGroupAudit\adgroup.csv -NoTypeInformation
若要包含组、计算机等其他AD对象,只需将Get-ADUser替换为Get-ADObject即可。
内容的提问来源于stack exchange,提问作者On3N3xus
相关产品推荐
相关产品推荐

