获取多个子OU的ADUER信息

时间:2015-10-01 15:45:16

标签: powershell scripting active-directory powershell-v4.0

我有什么可能是也可能不是一个独特的问题(但可能不是),我确信这是一个(相对)简单的解决方案。我的组织管理着3个不同地区的几所学校。我正在编写一个PS脚本来遍历AD中的所有用户和计算机,并找到被禁用的人机并移动它们。问题在于,因为我们使用Exchange for Rooms&技术,这是残疾人的帐户。我需要做的是使用Get-ADUser,只查看每个站点的“Users”OU中的帐户。如果我只打一个网站,我知道如何做到这一点:

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

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

我希望有一种方法可以使用通配符或Get-ADUser语句中的某些内容来实现这一点,但我的直觉是使用for循环对其进行编写,以某种方式拉动区域,然后是网站,并且通过,但我不确定这是否正确,或者如何将数据正确地拉入阵列。

1 个答案:

答案 0 :(得分:0)

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

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

他们可能采用其他方式,但如果您尝试跟踪和修改以符合您的要求。

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

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

如果发现首先使用上述内容生成用户列表,然后检查此列表然后将其过滤掉。

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