2016-09-02 148 views
1

ps1在遠程機器上。我在其他一些機器的指令下運行。命令與ScriptBlock之間的區別Powershell

是否有同時使用下面的腳本有什麼區別---

invoke-command -computer $MachineName -command { C:\hello.ps1 } 
invoke-command -computer $MachineName -scriptblock{ C:\hello.ps1 } 

此外,我將使用循環具有相同的腳本的名稱,但有位於工作DIFF序列多機僅在每臺遠程機器上。想要了解第二臺機器的執行情況只有在第一臺機器完成時纔會執行。正確嗎?

回答

3

-command和-ScriptBlock

有正在執行的差異之間的差異。 -command只是scriptblock的別名。您可以通過獲取爲invoke-command命令

(Get-Command -Name Invoke-Command).Parameters.Values | select name, aliases 

順序執行

是的,執行是順序的參數信息來驗證。在第一臺機器上完成命令後,您指定的命令將在第二臺機器上執行。

According to the help

這些命令(每次一個)同步運行。當命令 完成時,所有計算機的命令輸出爲 ,保存在$ version變量中。輸出包括數據來源的計算機的名稱 。

+0

謝謝!任何幫助我的第二個查詢,因爲我希望我的第一個調用完全執行然後想要在循環中去其他服務器...是由循環和自動調用照顧? – RishuA

+0

這實際上取決於當多個計算機名通過時如何實現'Invoke-Command'。我會*認爲*這是連續的,但我必須驗證。 –

+0

其實我現在不能在現場機器上測試,因爲有些工作正在進行更多的日子.. – RishuA

0

要回答你的第二個問題:Invoke-Command並行工作。它將腳本塊中提到的所有機器並行運行到所有機器。默認情況下,powershell會一次對多達32臺電腦進行對話。如果你指定的不止一個,它會將它們排隊,這樣當一臺計算機完成時,下一個將開始。但是,我相信,您可以通過指定Invoke-Command的-throttlelimit參數來增加該數字。

+0

我正在使用循環,但它會並行嗎?或一次一臺機器。以下是代碼。 MACHINES = Get-Content「Somelocation」 foreach($ MACHINES中的$ Machine) {invoke-command -computer $ Machine -command {C:\ hello。PS1}} – RishuA

+0

利芬Keersmaekers建議,這將是一個連續的後一個.. – RishuA

+1

我試了兩臺活遠程計算機及其順序不平行。 – RishuA

相關問題