1
我想指定一个结构化的命令顺序,我正在寻找比我目前更简单的方法。我有一系列服务器的有序重启。服务器处于分层状态,因此必须按特定顺序关闭层,然后以相反的顺序重新启动。时间也是一个问题,因为有很多服务器,我不想要大量的停机时间。ForEach-Object操作Powershell
什么我是这样的......
$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服务器,然后进入我的验证循环(也许使用管道)。另外,有没有办法让我可以做一个“命令循环”,所以我不必有这么长的难以管理的脚本?
创建执行上述活动的作业(脚本块)(关机 - >确认 - >停止)。这些应该并行执行。将作业分组成层,依次执行。为每个层次创建一个列表,以便按顺序放置完成的作业。最后,反过来浏览列表以调出服务器。 – MFT
@MFT说什么。有关示例,请参见[这里](http://stackoverflow.com/a/18193195/1630171)。 –