Quest ActiveRoles Managementshell:FOREACH-OBJECT Set-QADUSER Server不愿意

时间:2013-01-31 11:36:07

标签: powershell foreach

我要在AD环境中为每个用户更新不同的值(1000+用户)。

我有一个包含所有值的CSV文件,文件的格式类似于

SamAccountName,Name,telephoneNumber,ipPhone....

我尝试使用以下PS语法导入数据:

import-csv -path "PathToCSVFiles" | ForEach-Object {
    get-qaduser -SamAccountName $_.SamAccountName -SearchScope "Subtree" -SearchRoot "ou=SomeOu,DC=subdomain,DC=domain,DC=local"| Set-QADUser -objectAttributes @{ipPhone=$_.ipPhone}
}

但我总是得到“Set-QADUser:服务器不愿意处理请求。”每个用户的错误。

当我使用单个值运行整个“get-qaduser .... set-qaduser”行而不是在foreach-object块中运行它时,它工作得很好,我无法理解为什么foreach部分不起作用。

目前我有一个Excel VBA宏,它为每个需要更新的用户编写一行PS1文件,但这很麻烦而且没什么用处。

任何人都可以告诉我我做错了什么,非常感谢。

谢谢&最好, 马库斯

2 个答案:

答案 0 :(得分:1)

如果删除get命令怎么办?

Import-Csv -path "PathToCSVFiles" | ForEach-Object {
    Set-QADUser $_.SamAccountName -ObjectAttributes @{ipPhone=$_.ipPhone}
}

答案 1 :(得分:0)

在你的第二个foreach循环中$ _指的是get-qaduser发送的结果,它不是ipPhone属性。
试试这个:

import-csv -path "PathToCSVFiles" | ForEach-Object {
    $ipPhone=$_.ipPhone
    get-qaduser -SamAccountName $_.SamAccountName -SearchScope "Subtree" -SearchRoot "ou=SomeOu,DC=subdomain,DC=domain,DC=local"| Set-QADUser -objectAttributes @{ipPhone=$ipPhone}
}