为新用户复制 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)=.+)',''
所以我一直在通过活动目录以这种方式创建一个新用户。我想在创建新用户时从 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
.
$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)=.+)',''