我问这个问题主要是想问是否有更好的方法来做我的工作。我还想知道是否有人认为以这种方式获取此信息有任何问题。
我正在尝试获取用户所在的顶级 OU,以及任何较低级别的 OU。主要问题是我们有多个站点,其中一些站点具有用于用户帐户的多层 OU ( ou=doctors,ou=Users,ou=Site,dc=example,dc=com
),而有些站点只有一个 OU ( ou=Users,ou=Site,dc=example,dc=com
)。我使用下面的脚本来获取 DN 路径,拆分它,然后用最后三个部分向后重建它。任何人都可以看到这样做的任何问题。只是感觉有些不对劲......
$user = Get-ADUser CKnutson
$user.DistinguishedName
# Returns: CN=Cory Knutson,OU=IT,OU=Users,OU=Site,DC=example,DC=com
$split = $user.DistinguishedName.Split(',')
$path = "$($split[-3]),$($split[-2]),$($split[-1])"
Write-Host $path
# Returns: OU=Site,DC=example,DC=com
简而言之,我的最终目标是找到通往每个“站点”OU 内部的“禁用”OU 的路径。因此,我的脚本可以在禁用帐户时将对象移动到该站点的顶级 OU ( OU=Disabled,OU=Site,DC=example,DC=com
) 中的适当位置。