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

时间:2015-03-27 10:53:46

标签: powershell powershell-v3.0

所以我一直在这个方面通过活动目录创建一个新用户。我想在创建新用户时从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

3 个答案:

答案 0 :(得分:1)

我们不知道$CName 实际是什么,但我们可以看到Get-ADUser理论上能够从该变量返回一个userobject。我们可以使用它从DistinguishedName获取OU。

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

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

如果$Cname已经是DistinguishedName,则可以简化此过程。

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

答案 1 :(得分:1)

您的CN可能包含嵌入式逗号(它们必须使用' \'进行转义,但它们可以在那里),因此您可能无法在逗号上可靠地拆分DN。我一直认为这是可靠的:

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

答案 2 :(得分:0)

不是显示路径的属性,但您的distinguishedName将包含它。我要做的是

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

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