0

我必须在我们的 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 文件,但这很混乱,而且没有真正的帮助。

谁能告诉我我做错了什么,将不胜感激。

谢谢和最好的,马库斯

4

2 回答 2

1

如果删除 get 命令会怎样?

Import-Csv -path "PathToCSVFiles" | ForEach-Object {
    Set-QADUser $_.SamAccountName -ObjectAttributes @{ipPhone=$_.ipPhone}
}
于 2013-01-31T12:08:42.460 回答
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}
}
于 2013-01-31T12:06:00.703 回答