2014-01-28 271 views
-1

如何在多臺計算機上並行運行PowerShell腳本?並行運行powershell命令

$TempFolder = "C:\DOWNLOADED_APPLICATIONS" 
      if(!(test-path $TempFolder)) 
      {New-Item -path $TempFolder -type directory} 

    Write-Host "" 
    Write-Host "Downloading .NET framework v4.0 installation package" -ForegroundColor Yellow; 
      $src = "\\onesoul\tools\DOTNET45\dotNetFx45_Full_x86_x64.exe" 
      $dest = "$TempFolder" + "\" + "dotNetFx45_Full_x86_x64.exe" 
      $wc = New-Object System.Net.WebClient 
      $wc.DownloadFile($src, $dest) 
      $args = " /q /norestart" 
     Write-Host "Installing .NET framework v4.0" -ForegroundColor Yellow; 
     Start-Process -FilePath $dest -ArgumentList $args -Wait 
     Write-Output "Dot net 4.5 installed" 

如果我一次在一臺計算機上遠程運行它,該腳本可以正常工作。我如何讓它平行運行?

+1

您可以使用[jobs](http://stackoverflow.com/a/18193195/1630171)。 –

+0

根據您的環境,您最好只做一次下載,然後將其複製到其他機器,並使用invoke-command啓動每個機器上的安裝。 – mjolinor

回答

1

要在多臺遠程計算機上運行腳本,請使用PowerShell遠程處理。這就要求每一個計算機您連接到了已啓用PowerShell遠程處理,你做的命令:

Enable-PSRemoting -Force 
從PC

然後,運行提升的控制檯,使用Invoke命令來運行對多臺計算機的腳本例如:

Invoke-Command -Computer server1,server2,server3 -Auth CredSSP ` 
    -FilePath c:\script.ps1 -ArgumentList scriptParameter1, scriptParameter2 

我建議你使用-Auth CredSSP,以避免與您的憑據第二跳的問題,因爲你從遠程計算機訪問網絡共享。此外,FilePath參數將獲取本地腳本的路徑,並將其內容複製到每臺遠程計算機。該腳本不應該依賴於其他腳本,除非它們存在於所有遠程計算機上。最後,如果您使用憑據,則應該在所有遠程計算機上管理權限。如果您不這樣做,請使用-Credential參數爲具有該帳戶的帳戶提供憑據。