我知道如何重新启动广告资源中的所有主机/虚拟机。 我创建了一个简短的脚本,逐个重新启动主机。 但这需要很长时间。如何才能同时重启所有主机?
我的代码:
foreach ($host in $hosts) {
Restart-Computer -ComputerName $host -Wait
Write-Host "$host restarted "
}
答案 0 :(得分:2)
Restart-Computer
将接受ComputerName
的多个条目,因此您可以一次在多个主机上执行重新启动。
使用此方法,您可以批量启动重启,例如一次启动三次,这将显着减少不占用VM群集/主机上的过多负载所需的时间。
$hosts = @("server01","server02","server03","server04","server05","server06","server07","server08","server09","server10")
[int]$batches = 3 #number of computers to restart in each 'batch'
[int]$skip = 0
do {
$selected_hosts = $hosts | Select-Object -First $batches -Skip $skip
Restart-Computer -ComputerName $selected_hosts -Wait -WhatIf
Write-Host "$selected_hosts restarted"
$skip = $skip + $batches
}
while ($selected_hosts)
注意:当您准备好运行脚本时,请删除-WhatIf
,这样就可以了Restart-Computer
只会写入控制台,告知您它将执行的操作,而不是实际执行重新启动。< / p>
答案 1 :(得分:0)
这是个好主意吗? - Restart-Computer -asJob 或许是更好的解决方案??
$j = Restart-Computer -ComputerName "Server01", "Server02" -AsJob
PS C:\> $Results = $j | Receive-Job
PS C:\> $Results
答案 2 :(得分:0)
您可以尝试WMI
重启服务器吗?我在social.technet.microsoft
论坛上找到了一种这样的方法。
$server = get-content c:\Servers.txt
(gwmi -Class Win32_OperatingSystem -ComputerName $server).Win32Shutdown(6)
If ($?) {
Write-Host "$server successfully rebooted"
}Else{
Write-Host "Could not reboot $server"
}
您还可以找到其他方法,例如使用批处理文件。查看this链接。