New-Aduser:对象名称语法错误

时间:2014-08-12 19:42:21

标签: powershell csv for-loop active-directory

我有一个脚本,我用它从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,但我想知道我做错了什么。

1 个答案:

答案 0 :(得分:1)

这对我有用。摆脱了空值和新的行值,只给了我每行的每个字符串值。那里的接缝可能有一些空白区域或其他一些干扰如果你只是拆分“n”

$test = @"
user1
user2
user3
"@
$test.split(“`r`n”) | ForEach-Object {if($_){get-aduser $_}}