如何在Active Directory中检索OU名称含Terminated关键词的用户?PowerShell脚本优化问询
简化Active Directory批量检索含Terminated OU用户的PowerShell脚本
我来帮你搞定这个简化需求!你不用再手动逐个指定OU,完全可以通过动态匹配OU名称的方式实现批量获取用户,具体分两步操作:
步骤1:获取所有符合条件的OU
首先用Get-ADOrganizationalUnit命令,在指定的父OU(Ex Domain Users)下筛选出名称包含Terminated的所有子OU:
# 先定义父OU的完整路径 $parentOU = "OU=Ex Domain Users,DC=xxx,DC=local" # 获取所有名称包含Terminated的直接子OU # 如果需要包含多级嵌套的子OU,把-SearchScope改成Subtree即可 $terminatedOUs = Get-ADOrganizationalUnit -Filter {Name -like "*Terminated*"} -SearchBase $parentOU -SearchScope OneLevel
步骤2:遍历OU批量获取用户
接下来遍历这些OU,逐个拉取用户并合并结果,这里给两种写法供你选择:
写法1:foreach循环(直观易懂)
# 初始化空数组存储用户数据 $users = @() foreach ($ou in $terminatedOUs) { # 从当前OU中获取所有用户,追加到数组中 $users += Get-ADUser -Filter * -SearchBase $ou.DistinguishedName }
写法2:管道写法(性能更优,推荐)
# 用管道遍历OU,直接收集所有用户结果 $users = $terminatedOUs | ForEach-Object { Get-ADUser -Filter * -SearchBase $_.DistinguishedName }
额外注意事项
- 执行脚本前确保已加载Active Directory模块:
Import-Module ActiveDirectory - 替换脚本中的
DC=xxx,DC=local为你实际的域信息 - 如果你的Terminated OU下还有多层子OU需要递归检索,记得把
-SearchScope OneLevel改为-SearchScope Subtree
这样以后再新增名称包含Terminated的OU,脚本不需要做任何修改就能自动包含进去,比硬编码四个OU要灵活得多!
内容的提问来源于stack exchange,提问作者Eray Balkanli
相关产品推荐
相关产品推荐

