批量通过Powershell / CSV问题添加AD

时间:2013-11-17 11:13:58

标签: powershell csv

我正在尝试将用户批量添加到我的Active Directory中,但是我在脚本开头就出现了表达式错误。我根本不是一个脚本爱好者,所以我真的没有想法。

$Users = Import-Csv ".\UsersFile.csv"
foreach ($User in $Users)
{
        -OrganizationalUnit $User.OU 
        -SamAccountName $User.UserName 
        -userPassword $User.Password 
        -GivenName $User.First 
        -Initials $USer.Initial 
        -sn $User.Last 
        -Displayname $User.DisplayName
        -Description $User.Description
        -Physicaldeliveryofficename $User.Office 
        -TelephoneNumber $User.Tel
        -Mail $User.mail 
        -streetaddress $User.Street 
        -postOfficeBox $User.Postbus
        -l $User.Location 
        -st $User.Provincie 
        -postalCode $User.Postcode 
        -c $User.Land 
        -deparment $User.Department
        -Company $User.Organisatie
        -Manager $User.Manager
        -Password $User.Password -ResetPasswordOnNextLogon $false 
}

错误日志。

在一元运算符' - '之后缺少表达式。 在C:\ Users \ Administrator \ Desktop \ CreateUserBulk.ps1:4 char:10 + - <<<< OrganizationalUnit $ User.OU`     + CategoryInfo:ParserError:( - :String)[],Parseexception     + FullyQualifiedErrorID:MissingExpressionAfterOperator


在尝试链接(来自serv)并相应地编辑CSV和脚本之后,现在就可以获得更多错误。

Import-Csv:无法打开文件“C:\ Users \ administrator \ UsersFile.csv”。 在C:\ Users \ administrator \ Desktop \ Untitled3.ps1:2 char:20 + $ Users = Import-Csv<<<< -Delimiter“;” -Path“。\ UsersFile.csv”     + CategoryInfo:OpenError:(:) [Import-Csv],FileNotFoundException     + FullyQualifiedErrorId:FileOpenFailure,Microsoft.PowerShell.Commands.ImportCsvCommand 您无法在空值表达式上调用方法。 在C:\ Users \ administrator \ Desktop \ Untitled3.ps1:9 char:53 + $ FirstLetterFirstname = $ UserFirstname.substring<<<< (0,1)     + CategoryInfo:InvalidOperation:(substring:String)[],RuntimeException     + FullyQualifiedErrorId:InvokeMethodOnNull

ConvertTo-SecureString:无法将参数绑定到参数“String”,因为它为null。 在C:\ Users \ administrator \ Desktop \ Untitled3.ps1:11 char:195 + New-ADUser -Name $ Detailedname -SamAccountName $ SAM -UserPrincipalName $ SAM -DisplayName $ Detailedname -GivenName  $ user.firstname -Surname $ user.name -AccountPassword(ConvertTo-SecureString<<<< $ Password -AsPlainText -Force)-Ena 流血$ true -Path $ OU     + CategoryInfo:InvalidData:(:) [ConvertTo-SecureString],ParameterBindingValidationException     + FullyQualifiedErrorId:ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ConvertToSe    cureStringCommand


EDIT2:已修复,我将源链接更改为完整性,现在可以正常工作了!

1 个答案:

答案 0 :(得分:0)

您没有在脚本中创建新的AD用户。所以-OrganizationalUnit应该是未定义的并抛出错误,请先将它们声明为变量。

Import-Module ActiveDirectory 
$Users = Import-Csv -Delimiter ";" -Path ".\UsersFile.csv"  
foreach ($User in $Users)  
{  
    $FirstLetterFirstname = $User.firstname.substring(0,1)     

    New-ADUser -Name $User.firstname + " " + $User.name 
    -SamAccountName $FirstLetterFirstName + $User.name 
    //... and so on
} 

您可以先以$FirstletterFirstName的方式声明所有变量,并在每个循环结束时执行New-ADUser命令,以便以后更容易阅读和修改。

重要的部分仍然存在:添加新用户是通过您缺少的New-ADUser命令执行的。您还可以将New-ADUser添加到循环的顶部,如果您的代码中没有其他语法错误/拼写错误,则可以使查询正常工作

//编辑:你可以在http://gallery.technet.microsoft.com/scriptcenter/ed20b349-9758-4c70-adc0-19c5acfcae45

找到一个有效的例子

和New-ADUser的TechNet文章: http://technet.microsoft.com/en-us/library/ee617253.aspx