Powershell 同时在所有主机上重新启动计算机

Powershell 同时在所有主机上重新启动计算机,powershell,Powershell,我想重新启动清单中的所有主机/虚拟机。 我创建了一些简短的脚本,可以逐个重新启动主机。 但这需要很长时间。如何使所有主机同时重新启动 我的代码: foreach ($host in $hosts) { Restart-Computer -ComputerName $host -Wait Write-Host "$host restarted " } 这是个好主意吗重新启动计算机-asJob 或者是更好的解决方案 $j = Restart-Computer -ComputerNa

我想重新启动清单中的所有主机/虚拟机。 我创建了一些简短的脚本,可以逐个重新启动主机。 但这需要很长时间。如何使所有主机同时重新启动

我的代码:

foreach ($host in $hosts) {
    Restart-Computer -ComputerName $host -Wait
    Write-Host "$host restarted "
}

这是个好主意吗重新启动计算机-asJob 或者是更好的解决方案

$j = Restart-Computer -ComputerName "Server01", "Server02" -AsJob
PS C:\> $Results = $j | Receive-Job
PS C:\> $Results

这是个好主意吗重新启动计算机-asJob 或者是更好的解决方案

$j = Restart-Computer -ComputerName "Server01", "Server02" -AsJob
PS C:\> $Results = $j | Receive-Job
PS C:\> $Results

您可以尝试
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"
}

您还可以找到其他方法,如使用批处理文件。签出链接。

您可以尝试
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"
}

您还可以找到其他方法,如使用批处理文件。签出链接。

重新启动计算机
将接受计算机名称的多个条目,因此您可以一次在多台主机上执行重新启动

使用此选项,您可以成批启动重启,例如一次启动三次,这将显著减少重启所需的时间,而不会在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
只会写入控制台,通知您它将执行什么操作,而不会实际执行重新启动。

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
,此时
重新启动计算机
只会写入控制台,通知您它将执行什么操作,而不会实际执行重新启动。

除非您的主机数量很少,否则您肯定不想重新启动所有计算机(虚拟或物理)同时。这会给主机操作系统或电源带来巨大的压力。我认为最好的方法是通过一个服务器批量重新启动系统。除非您的主机数量可以忽略不计,否则您肯定不想重新启动所有计算机(虚拟或物理)同时。这会给主机操作系统或电源带来巨大的压力。我认为最好的方法是通过一台计算机批量重启系统。为什么乔布斯是一个更好的解决方案?他在寻找一个并行的解决方案吗?@RanadipDutta:好吧,如果你读了他们的问题,那么听起来肯定是这样。我的错。你是对的。尽管我埃弗尔对所有服务器都使用启动过程。为什么乔布斯是一个更好的解决方案?他是在寻找一个并行的解决方案吗?@RanadipDutta:好吧,如果你读了他们的问题,那听起来肯定是这样。我的错。你是对的。尽管我更喜欢对所有服务器使用启动过程。