ForEach-Object动作Powershell

时间:2014-04-15 18:03:27

标签: powershell foreach vmware

我正在尝试指定命令的结构化顺序,我正在寻找比现在更简单的方法。我有一个服务器的有序重启。服务器处于层级,因此必须按特定顺序关闭层,然后以相反的顺序重新启动。此外,时间也是一个问题,因为有很多服务器,我不想要大量的停机时间。

我拥有的是......

$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中的服务器,然后进入我的验证循环(可能使用管道)。另外,有没有办法可以制作一个“命令循环”,所以我不必拥有这么长的无法管理的脚本?

1 个答案:

答案 0 :(得分:0)

可能你应该使用Workflows