【问题标题】:How to add logic to a powershell script?如何将逻辑添加到 powershell 脚本?
【发布时间】:2018-11-21 02:13:51
【问题描述】:

在从我的输出中整理数据时需要帮助,我只想显示一个输出,当 STATERUNNING 时显示 ALL OK,如果 STATEFaulted 时显示 NOT OK(或任何其他字符串)。

我怎样才能做到这一点?

Invoke-Command -ComputerName XXXXX,XXXX -ScriptBlock { hastatus -sum; VXPRINT -VPl } -credential XXXXX

输出:

-- SYSTEM STATE
-- System               State                Frozen              

A  XXXXXXXXXXXXX        RUNNING              0                    
A  XXXXXXXXXXXXX        RUNNING              0   

【问题讨论】:

  • 这看起来不像调用 Invoke-Command 返回的所有信息,它指的是远程系统。返回的属性中通常有一个运行空间 ID 和一个 PSComputerName。你确定这是调用返回的所有数据吗?
  • hastatus -summary 不是本机 powershell 命令,因此您需要处理它返回的(类似表格的)字符串输出:stackoverflow.com/questions/38036175/…

标签: powershell


【解决方案1】:

只要按照你的输出,我认为这样的东西就是你想要的吗?

$output = @"
-- SYSTEM STATE
-- System               State                Frozen              

A  XXXXXXXXXXXXX        RUNNING              0                    
A  XXXXXXXXXXXXX        RUNNING              0  
A  XXXXXXXXXXXXX        ANYTHINGBUTRUNNING   0 
"@

($output -split '\r?\n') | ForEach-Object {
    if ($_ -match '^[A-Z]\s+\w+') {
        $system = $matches[0]
        if ($_ -match '\bRUNNING\b') {
            "$system  ALL OK"
        }
        else {
            "$system  NOT OK"
        }
    }
}

生成的 PowerShell 控制台输出将是:

A  XXXXXXXXXXXXX  ALL OK
A  XXXXXXXXXXXXX  ALL OK
A  XXXXXXXXXXXXX  NOT OK

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    相关资源
    最近更新 更多