你如何运行在多台机器上做同样的工作powershell?
How do you run the same job on multiple machines powershell?
基本上我正在尝试 运行 来自机器列表的 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
}
正如 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
基本上我正在尝试 运行 来自机器列表的 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
}
正如 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