Powershell 复制广告用户';新用户的OU路径

Powershell 复制广告用户';新用户的OU路径,powershell,powershell-3.0,Powershell,Powershell 3.0,因此,我一直在通过active directory以这种方式创建一个新用户。我想在创建新用户时从CName变量复制OU路径?有没有办法为新用户复制OU路径 $Props = (Get-ADUser -identity $CName -Properties MemberOf).MemberOf New-ADUser -SamAccountName $SName -UserPrincipalName ($Sname+" "+"@"+$Domain) -GivenName $Fname -N

因此,我一直在通过active directory以这种方式创建一个新用户。我想在创建新用户时从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
在理论上能够从该变量返回userobject。让我们使用它从
DiscrimitedName
获取OU

$singleUser = Get-ADUser -identity $CName -Properties MemberOf 
$Props = ($singleUser).MemberOf
$OU = ($singleUser).DistinguishedName.split(",",2)[1]
DiscrimitedName
前面已经有了带有
CN
的OU。我们在第一个逗号处拆分字符串并返回两个部分。将第二个元素返回到以后可以使用的
$OU

如果
$Cname
已经是
区分名称
,则可以简化此过程

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

没有显示路径的属性,但您的DiscrimitedName将包含该路径。我要做的是

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

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

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

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

$CName是一个可区分的名称吗?是的,它是一个用户输入变量。路径的简单一行就很好了。谢谢你的说明。当CN包含“,”时会发生什么?除非CN包含逗号时会失败。thors hammer的答案是适用的