我正在尝试将csv文件中的一些参数导入AD。我希望通过电子邮件匹配数据。我正在使用Quest ActiveRoles Management Shell。
Import-Csv c:\Test.csv |ForEach-Object {
Set-QADUser 'ou=User,ou=Accounts,ou=PL,dc=test,dc=com'
if(($_.E-mail Address)=mail){ $_.HR Department Code -department
$_.HR Department Code -telephoneNumber $_.Reports to L1 Formal Name -manager}
else
(Write-Host 'ERROR, User not present in AD')
}
这个循环有什么问题?是否可以使用这些白色空间,例如"人力资源部门代码" ,我尝试用变量替换它,但它不起作用。我用这个想法来写这个。我正在使用$ _。将它与来自csv
的列/ att名称相匹配http://dmitrysotnikov.wordpress.com/2008/10/03/update-active-directory-user-accounts-from-csv-file/
**更新
我目前正在使用的代码:
Import-Csv 'C:\Test_Peoplesoft.csv' | foreach-object{set-qaduser -mail $_.'E-mail Address' -Department $_.'HR Department Code' -telephoneNumber $_.'HR Department Code'}
现在没有任何事情发生,它只是开始而且永不停止,看起来没有任何反应。 我已经跳过了管理员字段,因为必须有一个登录名,而我的csv文件现在是这个字段的主管全名。
答案 0 :(得分:1)
我不认为您的if语句实际上是在比较您的csv电子邮件和您的AD电子邮件。只需将电子邮件用作身份参数:
Import-Csv $file | foreach-object{set-qaduser $_.email -Department $_.department -Manager $_.manager -Title $_.title -ObjectAttributes @{employeeID=($_.employeeID)}}
显然,我为您未使用的示例添加了一些属性。还用我的实际标题名称替换我的标题名称。我还尝试在CSV中避免使用标题中的空格。需要在-objectAttributes
中设置无标准属性,如员工ID和扩展属性等