如何在多台计算机上并行运行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"
如果我一次在一台计算机上远程运行它,此脚本可以正常工作。如何让它并行运行?
答案 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参数为帐户提供凭据。