【问题标题】:powershell table color resultspowershell 表格颜色结果
【发布时间】:2014-07-05 22:58:20
【问题描述】:

我有一个简单的数组 $Results。它有两列:任务、结果。我将它输出到一个表中,如下所示:

$(foreach($ht in $Results){new-object PSObject -Property $ht}) | Format-Table -AutoSize -Property Task, Result

结果列将包含“PASS”或“FAIL”。我希望 PASS 显示为绿色,FAIL 显示为红色。

有人知道实现此目的的简单方法吗?

理想情况下,只有通过/失败是彩色的,但如果需要,我可以忍受整行都完成。

【问题讨论】:

    标签: powershell powershell-2.0


    【解决方案1】:

    当我考虑这个问题时,我注意到相关问题中的一些内容看起来类似于“powershell 脚本格式表输出中的颜色词”。我拿了一个answers 来回答那个问题,稍微修改了一下,得出了以下结论:

    # Let's Build Some Sample Data To Play With...
    $Results = @()
    for( $j = 1; $j -le 25; ++$j ) {
        $ans = ( "PASS", "FAIL" ) | Get-Random
        $Results += [PSCustomObject]@{ Task = "Task{0:d2}" -f $j; Result = $ans }
    }
    
    # Here's The Important Part...
    filter PassFail {
        # Adapted From: https://stackoverflow.com/a/7368884/3168105
        $Pattern = "PASS|FAIL"
    
        $split = $_ -split $Pattern
        $found = [regex]::Matches( $_, $Pattern, 'IgnoreCase' )
        for( $i = 0; $i -lt $split.Count; ++$i ) {
            Write-Host $split[$i] -NoNewLine
            # Just in case something else pops up...
            switch( $found[$i] ) {
                "Fail" { $Color = "Red" }
                "Pass" { $Color = "Green" }
                default { $Color = "White" }
            }
            Write-Host $found[$i] -NoNewline -ForegroundColor $Color
        }
    
        Write-Host
    }
    
    # And here we put it together...
    $Results | Out-String | PassFail
    

    这个可以用来处理更多的结果,它只需要在switch语句中增加额外的行,并将额外的结果添加到$Pattern变量中。我不会开始说这是最好的解决方案(甚至是一个特别好的解决方案),但它确实有效并且似乎表现得相当好。

    要像上面那样使用它,使用哈希表数组,您应该能够按照以下方式做一些事情:

    $(foreach($ht in $Results){new-object PSObject -Property $ht}) | Format-Table -AutoSize Task, Result | Out-String | PassFail
    

    【讨论】:

    • 这行得通,只是输出表已关闭。列标题应为“任务”和“结果”。左栏中的所有内容都应该是一个任务,而右栏中的所有内容都应该是一个结果。所以颜色是正确的......只是现在的展示位置错了。
    • 还想确保我说谢谢您的辛勤工作。这超出了我的能力——我没有使用 PS 或正则表达式的经验。
    • 我想我明白发生了什么。我已经更新了我的答案,以包含您的命令,并添加了 PassFail 过滤器。在我的测试中,它似乎解决了左/右顺序问题。
    猜你喜欢
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2021-08-31
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多