如何在多台机器电源外壳上运行相同的作业?



基本上我试图从机器列表中运行Powershell命令。

我可以在每台计算机上调用该命令,但我必须等待每台计算机完成安装,然后才能继续下一台。当我尝试为每台机器创建一个作业时,没有任何反应,我怀疑这是因为我的脚本在将命令发送到下一台机器时已与该机器会话断开连接。

#Start/Var  
$creds = Get-Credential
$computers = Get-Content -Path .computers.txt 
$job = start-job -scriptblock { choco install c:packages.config -y }


foreach($server in $computers) {
CP .packages.config \$serverC$ 

Invoke-Command -ComputerName $server -ScriptBlock {$job} -Credential $creds
}

正如BenH在评论中提到的,你可以Invoke-Command并行执行事情。速度减慢的是,您将不得不等待每台计算机复制文件,但您可以同时在所有计算机上执行安装。

#Start/Var  
$creds = Get-Credential
$computers = Get-Content -Path .computers.txt 
#Copy files to servers one at a time
foreach($server in $computers) {
CP .packages.config \$serverC$ 
}
#Install the package on all servers in parallel 
Invoke-Command -ComputerName $computers -ScriptBlock {choco install c:packages.config -y} -Credential $creds

最新更新