2012-03-29 12 views
0

我試圖在通過Get-ADComputer選擇的多臺計算機上調用Get-WMIObject(gwmi)作爲後臺作業。在通過Get-ADComputer選擇的多臺計算機上調用Get-WMIObject

我第一次嘗試是

$job = Get-ADComputer -filter "name -like '*t90*'" | % { gwmi -computername $_.name -query "select name,username from win32_computersystem" -asjob -throttlelimit 10 } 

然而,由於我打電話gwmi一次爲每個計算機對象返回,數以百計的後臺作業的創建,我不相信他們會集體聽從ThrottleLimit 。

我正在做這個對嗎?

我知道,gwmi還可以接受的計算機名屬性的陣列,像這樣:

$job = gwmi -computername "computer1","computer2","computer3" -query "select * from win32_computersystem" -asjob -throttlelimit 10 

這樣做,這樣的結果在一個單一的工作,而不是幾百個,因爲gwmi只調用一次。那是我應該這樣做的方式嗎?而且,如果是這樣,如何將Get-ADComputer的輸出作爲數組提供給gwmi?

謝謝!

回答

1

首先讓所有的計算機名稱,並將其傳遞到ComputerName參數:

$cn = Get-ADComputer -filter "name -like '*t90*'" | select -expand name 
$job = gwmi -computername $cn -query "select name,username from win32_computersystem" -asjob -throttlelimit 10 
+0

完美,謝謝!爲什麼這裏需要-expand參數? – 2012-03-29 17:01:26

+1

它只給你值,沒有它你會得到具有名稱屬性的對象 – 2012-03-29 17:09:46

+0

它相當於get-qadcomputer ... | foreach {$ _。name} – 2012-03-29 17:47:32

相關問題