Как вы выполняете одно и то же задание на нескольких машинах PowerShell? - PullRequest
0 голосов
/ 09 октября 2018

В основном я пытаюсь запустить команду 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 \\$server\C$ 


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

}

1 Ответ

0 голосов
/ 09 октября 2018

Как упоминал 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 \\$server\C$ 
}

#Install the package on all servers in parallel 
Invoke-Command -ComputerName $computers -ScriptBlock {choco install c:\packages.config -y} -Credential $creds
...