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

如何用PowerShell从多个AD OU中筛选特定子OU并获取用户列表

解决思路:批量提取多OU下的Platform子OU用户列表

嘿,你这个需求完全不用写一大堆重复命令或者复杂脚本,有几个高效的方法能帮你自动搞定,下面给你拆解一下:

方法1:先定位所有Platform OU,再遍历提取用户

这是最稳妥的方式——先把所有名为Platform的OU找出来,再挨个去这些OU里拉用户列表,完全不用手动指定每个父OU的路径:

# 第一步:搜索根域下所有名为Platform的OU(SearchScope设为Subtree会递归找所有层级)
$platformOUs = Get-ADOrganizationalUnit -Filter {Name -eq "Platform"} -SearchBase "DC=RootDomain,DC=com" -SearchScope Subtree

# 第二步:遍历每个找到的Platform OU,提取用户
foreach ($ou in $platformOUs) {
    # 直接用OU的DistinguishedName作为SearchBase,精准定位
    Get-ADUser -SearchBase $ou.DistinguishedName -Filter *
}

如果你的环境包含子域(比如ChildDomain.RootDomain.com),可以扩展成跨域查询:

# 获取森林里的所有域
$allDomains = (Get-ADForest).Domains

foreach ($domain in $allDomains) {
    # 针对每个域搜索Platform OU
    $platformOUs = Get-ADOrganizationalUnit -Filter {Name -eq "Platform"} -Server $domain -SearchScope Subtree
    foreach ($ou in $platformOUs) {
        Get-ADUser -SearchBase $ou.DistinguishedName -Server $domain -Filter *
    }
}

这个方法的优势是精准可控,不会误匹配其他带Platform字样的OU,而且能自动覆盖所有符合条件的层级。

方法2:用LDAP过滤器直接匹配用户路径

如果你想一步到位,也可以通过LDAP过滤器直接筛选出父OU包含Platform的用户,但要注意这个方法可能会匹配到Platform OU的子OU里的用户(如果不需要的话得调整规则):

Get-ADUser -Filter * -SearchBase "DC=RootDomain,DC=com" -SearchScope Subtree -LDAPFilter "(distinguishedName=*,OU=Platform,*DC=RootDomain,DC=com)"

解释一下这个过滤器:它会匹配所有DN里包含OU=Platform,且属于RootDomain.com的用户,不管Platform OU在哪个父层级下面。如果只想匹配直接在Platform OU下的用户,可以把过滤器改成:

-LDAPFilter "(distinguishedName=CN=*,OU=Platform,*)"

不过这种方法的容错性稍差,比如如果用户的DN结构有特殊情况(比如包含逗号)可能会出问题,所以还是方法1更推荐。

小提示

  • 如果需要导出结果到CSV,可以在Get-ADUser后面加| Export-Csv -Path "C:\PlatformUsers.csv" -NoTypeInformation -Append(用Append避免覆盖跨域查询的结果)
  • 可以给Get-ADUser加-Properties参数提取更多用户属性,比如EmailAddress、LastLogonDate等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:24:57