【问题标题】:ForEach-Object actions PowershellForEach-Object 动作 Powershell
【发布时间】:2014-04-15 18:03:27
【问题描述】:

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

我有的是这个……

$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 说了什么。有关示例,请参见 here

标签: powershell foreach vmware


【解决方案1】:

也许你应该使用Workflows

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 2020-05-19
    • 2016-01-13
    相关资源
    最近更新 更多