获取多个子 OU 的 ADUser 信息

Get-ADUser info for multiple sub-OUs

我有一个可能是也可能不是一个独特的问题(但可能不是),我确信这是一个(相对)简单的解决方案。我的组织管理着 3 个不同地区的多所学校。我正在编写一个 PS 脚本来遍历我们在 AD 中的所有用户和计算机,并找到被禁用的人员机器并移动它们。问题在于,当我们使用 Exchange for Rooms & Technology 时,并不是所有禁用的帐户都应该移动,这些帐户仍然处于禁用状态。我需要做的是使用 Get-ADUser 并只查看每个站点 "Users" OU 中的帐户。如果我只访问 1 个站点,我知道该怎么做:

Get-ADUser -SearchBase “OU=Users, OU=SiteName, OU=Region, OU=Company,dc=Company,dc=org” | Select Name,SamAccountName

但是因为我们在 3 个位置有多个站点,每个站点都有自己的 "Users" OU,所以我不确定攻击它的最佳方法。也许我不应该使用 SearchBase?

我希望有一种方法可以使用通配符或 Get-ADUser 语句中的其他内容来执行此操作,但我的直觉是使用 for 循环编写脚本,以某种方式拉取区域,然后是站点,然后通过了,但我不确定这是否正确,或者如何正确地将数据实际拉入数组。

我有时不得不解决这个问题,发现对我来说最好的方法是在 DN 上进行过滤。

我怀疑您的共享 mailbox/resource 邮箱和服务帐户也位于它们自己的 OU 中。

他们可能还有其他方式,但如果您尝试遵循并修改以符合您的要求。

Get-ADUser -Filter 'enabled -eq $false' -Searchbase "OU..." | where {$_.distinguishedname -match "Users"}

您还可以在 -and $_.distinguishedname -notmatch "Shared|mailbox|Resource|SVC 中包含这一切都取决于您试图从搜索中过滤掉的内容。

如果发现先使用上面的生成一个用户列表,然后检查这个列表,然后过滤掉。

完成后,您应该将其分配给一个变量,然后对每个用户执行一个 foreach 循环。