2013-01-31 27 views
0

我必須爲我們的AD環境(1000+用戶)中的每個用戶更新不同的值。Quest ActiveRoles Managementshell:FOREACH-OBJECT Set-QADUSER服務器不願意

我有一個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文件,但這是一團糟,並沒有什麼幫助。

任何人都可以請告訴我我做錯了什麼,將不勝感激。

感謝&最好, 馬庫斯

回答

0

在你的第二個foreach循環$ _指的是由獲得-qaduser whichhave不是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} 
} 
+0

你是完全正確的,但不幸的是這不是錯誤的原因,因爲$ ipPhone的聲明只在複製和粘貼過程中丟失。基本上我試圖直接使用$ _。ipPhone,而且沒有運氣,當我複製並粘貼PS語法的部分到我的文章時,我錯過了包含$ ipPhone聲明。無論如何感謝您的回覆! –

1

如果去掉get命令是什麼?

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

+1我很確定它的工作原理! –

+0

非常感謝,對我來說工作得非常好,但是你猜測爲什麼在運行我的原始語法時它不工作? –

+0

當你刪除set命令時會發生什麼?你在csv文件中每個項目都得到一個對象嗎? –

相關問題