首页 > 解决方案 > 更改 Powershell 表中第一行的文本颜色

问题描述

如何更改 powershell 表第一行中文本的颜色?

我看过这个

@{"Bob"=1;"John"=3;} | Format-Table @{
    Label = "Name"
    Expression =
    {
        if ("John" -eq $_.Name)
        {
            $color = "32" #green
        }
        else
        {
            $color = "0" #white
        }
        $e = [char]27
        "$e[${color}m$($_.Name)${e}[0m"
    }
}, Value

但我不确定如何在没有条件的情况下适应它。我希望表格的第一行打印为绿色

标签: powershell

解决方案


如果不使用 ANSI 转义码,您可以这样做:

switch -Regex ((@{"Bob"=1;"John"=3} | Format-Table -AutoSize | Out-String) -split '\r?\n' ) {
    '^John'  { Write-Host $_ -ForegroundColor Green }
    default  { Write-Host $_ -ForegroundColor White }
}

在此处输入图像描述


如果您的意图是始终以不同的颜色写出第一条数据线,您可以这样做

$lines = (@{"Bob"=1;"John"=3} | Format-Table -AutoSize | Out-String).Trim() -split '\r?\n'
for ($i = 0; $i -lt $lines.Count; $i++) {
    $color = if ($i -eq 2) { 'Green' } else { 'White' }
    Write-Host $lines[$i] -ForegroundColor $color
}

推荐阅读