并行运行powershell命令

时间:2014-01-28 22:40:22

标签: 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 个答案:

答案 0 :(得分:1)

要在多台远程计算机上运行脚本,请使用PowerShell远程处理。这要求您连接的每台计算机都必须启用PowerShell远程处理,您可以使用以下命令执行:

Enable-PSRemoting -Force

然后在PC上运行提升的控制台,使用Invoke-Command对多台计算机运行脚本,例如:

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

由于您从远程计算机访问网络共享,我建议您使用-Auth CredSSP来避免凭据的第二跳问题。此外,FilePath参数将获取本地脚本的路径,并将其内容通过线路复制到每台远程计算机。该脚本不应依赖其他脚本,除非它们存在于所有远程计算机上。最后,如果您使用凭据,则应在所有远程计算机上管理priv。如果不这样做,请使用-Credential参数为帐户提供凭据。