为新用户复制 AD 用户的 OU 路径

Copy AD user's OU path for new user

所以我一直在通过活动目录以这种方式创建一个新用户。我想在创建新用户时从 CName 变量复制 OU 路径?有没有办法为新用户复制该 OU 路径?

$Props = (Get-ADUser -identity $CName -Properties MemberOf).MemberOf
    New-ADUser -SamAccountName $SName -UserPrincipalName ($Sname+" "+"@"+$Domain)  -GivenName $Fname -Name ($FName+" "+$LName) -Surname $LName -Email "$Email" -Path "OU=Administrators,OU=Domain,DC=domain,DC=local" -ChangePasswordAtLogon $true

我们不知道 $CName 实际上 是什么,但我们可以看到 Get-ADUser 在理论上能够 return来自该变量的用户对象。让我们用它从 DistinguishedName.

中获取 OU
$singleUser = Get-ADUser -identity $CName -Properties MemberOf 
$Props = ($singleUser).MemberOf
$OU = ($singleUser).DistinguishedName.split(",",2)[1]

DistinguishedName 已经有前面带 CN 的 OU。我们将字符串拆分为第一个逗号和 return 2 部分。将第二个元素返回到 $OU,您可以稍后使用。

如果$Cname已经是DistinguishedName那么这个过程可以简化。

$OU = $Cname.split(",",2)[1]

没有 属性 显示路径,但您的 distinguishedName 将包含它。我会做的是

#split on the first comma, save everything after the username to $path    
$path = (Get-AdUser foo).distinguishedName.Split(',',2)[1]

然后您可以将其作为新用户对象的路径传入。

您的 CN 可能包含嵌入的逗号(它们必须使用“\”进行转义,但它们可以在其中),因此您可能无法仅通过逗号可靠地拆分 DN。我一直认为这是可靠的:

$OU = $CName -replace '.+?,((?:DC|OU)=.+)',''