所以我一直在这个方面通过活动目录创建一个新用户。我想在创建新用户时从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
答案 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]
然后您可以将其作为新用户对象的路径传递。