我尝试将userprincipalname创建为用户名和硬编码域名的组合
csv文件:
name,displayname,givenname,surname
dhall,Don Hall,Don,Hall
代码:
Import-csv "c:\output.csv" | ForEach-Object {new-aduser -name $_.name -UserPrincipalName ("{0}@{1}" -f $_.name,"Dev.domain.Net") -DisplayName "$($_.givenname $_.surname)" -givenName $_.givenname -surname $_.surname -path "OU=Workspaces,DC=Dev,DC=domain,DC=Net" -AccountPassword (convertto-securestring passs -asplaintext -force) -Enabled [System.Convert]::toboolean($true)) -ChangePasswordAtLogon ([system.convert]::ToBoolean($true))}
得到:
At line:1 char:159
+ ... -f $_.name,"Dev.domain.Net") -DisplayNa
+
Unexpected token '$_' in expression or stateme
+ CategoryInfo : ParserError: (:)
+ FullyQualifiedErrorId : UnexpectedToken
也试过-UserPrincipalName ([string]::Concat($_.name,"@dev.domain.net"))
但同样的错误
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 14393 1944
Windows server 2016
答案 0 :(得分:1)
不确定导致该错误的原因(目前没有AD控制器进行测试,因此无法验证)但是在我需要多次重用属性的情况下,我倾向于分配它到一个临时变量(使编写代码稍微容易一些,并且不会遇到管道变量更新的问题)。
Import-CSV "c:\output.csv" | ForEach-Object {
$name = $_.name
$upn = "{0}@{1}" -f $name,"dev.domain.net"
New-ADUser -Name $name -UserPrincipalName $upn #...
}