PowerShell技术问询:如何查找组中的所有嵌套组?
查找AD组中所有嵌套组成员的方法
针对你提到的多级嵌套组场景(最多六级嵌套),有两种实用方法可以提取目标组下所有的嵌套组成员:
方法一:用Get-ADGroupMember筛选组对象
默认Get-ADGroupMember -Recursive会返回所有类型的成员(用户、计算机、组),只需添加过滤条件就能只保留组:
Get-ADGroupMember -Identity "你的目标组名称" -Recursive | Where-Object {$_.objectClass -eq "group"}
这个命令会遍历所有嵌套层级,把所有属于目标组的子组筛选出来,适合简单场景快速查询。
方法二:用LDAP递归过滤器高效查询
当嵌套层级深、成员数量大时,推荐用AD原生的LDAP递归规则(LDAP_MATCH_RULE_IN_CHAIN)直接让服务器处理递归,性能更优:
Get-ADGroup -LDAPFilter "(memberOf:1.2.840.113556.1.4.1941:=CN=目标组,OU=Groups,DC=你的域名,DC=com)"
如果需要查看组的额外属性(比如描述、SamAccountName),可以加上-Properties参数:
Get-ADGroup -LDAPFilter "(memberOf:1.2.840.113556.1.4.1941:=CN=目标组,OU=Groups,DC=你的域名,DC=com)" -Properties Name, SamAccountName, Description
这个规则会自动递归所有嵌套层级,返回所有隶属于目标组的组对象,无需本地遍历处理。
内容的提问来源于stack exchange,提问作者razumny
相关产品推荐
相关产品推荐

