我有一个脚本,我用它从csv文件创建批量用户,工作正常。
Import-Csv e:\temp\newemps.csv | %{
$ou = $_.ou
$firstname = $_.first
$lastName = $_.last
$accountName = $("{0}{1}" -f $firstname.Substring(0,1),$lastName).ToLower()
$description = $_.desc
$password = "Welcome1"
$name = "$firstName $lastName"
New-AdUser -SamAccountName $accountName -GivenName $firstName -UserPrincipalName "$accountName@ba.net" -Surname $lastName -DisplayName $name -Name $name -AccountPassword (ConvertTo-SecureString -AsPlainText $password -Force) -Enabled $true -Path $ou -Description $description -ChangePasswordAtLogon:$False
If ($_.Group -ne ""){
Add-adgroupmember -identity $_.group -members $accountName
}
If ($_.email -eq "y"){
Enable-Mailbox -Identity $accountName -Alias $accountName
Set-Mailbox $accountName -MaxSendSize 10mb -MaxReceiveSize 10mb
Get-CasMailbox $accountName -OwaEnabled:$false -ActiveSyncEnabled:$false
}
}
我正在尝试修改此脚本,以便我可以创建一些不符合我们典型约定的通用帐户。输入是一个here-string,假定为csv,因为唯一的唯一项是机场代码。为简洁起见,我缩短了here-string。
$bases = @"
YAB
YEK
YYH
YHI
"@
$bases.Split("`n") | %{
$ou = "CN=Users,DC=BA,DC=NET"
$firstname = "$_".ToString()
$lastName = "Counter"
$accountName = "$_" + "Counter"
$description = "Base Front Counter"
$password = "Welcome1"
$name = "$firstName $lastName"
New-AdUser -SamAccountName $accountName -GivenName $firstName -UserPrincipalName "$accountName@ba.net" -Surname $lastName -DisplayName $name -Name $name -AccountPassword (ConvertTo-SecureString -AsPlainText $password -Force) -Enabled $true -Path $ou -Description $description -ChangePasswordAtLogon:$False
}
使用here-string有一些我无法解释的事情。它成功创建的唯一帐户是YHI
(此处为字符串的最后一个)。对于所有其他人,它给出了New-AdUser : The object name has bad syntax
。互联网研究显示csv-imports的许多错误,其中数据有空白和其他问题,但我不知道这里的问题是什么。
最后我只是制作了一个csv文件,而不是使用here-string,但我想知道我做错了什么。
答案 0 :(得分:1)
这对我有用。摆脱了空值和新的行值,只给了我每行的每个字符串值。那里的接缝可能有一些空白区域或其他一些干扰如果你只是拆分“n”
$test = @"
user1
user2
user3
"@
$test.split(“`r`n”) | ForEach-Object {if($_){get-aduser $_}}