我正在尝试指定命令的结构化顺序,我正在寻找比现在更简单的方法。我有一个服务器的有序重启。服务器处于层级,因此必须按特定顺序关闭层,然后以相反的顺序重新启动。此外,时间也是一个问题,因为有很多服务器,我不想要大量的停机时间。
我拥有的是......
$Servers | Where-Object {$_.Tier -match "App"} | ForEach-Object {
Shutdown-VMGuest -VM $_.Name -Confirm:$false | Out-Null
}
$Servers | Where-Object {$_.Tier -match "App"} | ForEach-Object {
while(((Get-VM $_.Name).PowerState -ne "PoweredOff") -and ($sw.Elapsed.TotalSeconds -lt $timeout)) {
Start-Sleep -Seconds 5
}
if ((Get-VM $_.Name).PowerState -ne "PoweredOff") {
Stop-VM -VM $_.Name -Confirm:$false | Out-Null
}
}
然后我只是为所有层重复这些代码。是否有一种更简单的方法可以关闭FIRS中的服务器,然后进入我的验证循环(可能使用管道)。另外,有没有办法可以制作一个“命令循环”,所以我不必拥有这么长的无法管理的脚本?