Изменить цвет текста первой строки в таблице Powershell

#powershell

#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
  

Но я не уверен, как адаптировать его без условия. Я хочу, чтобы первая строка таблицы была напечатана зеленым цветом

Ответ №1:

Вы могли бы сделать это без использования управляющих кодов 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
}
  

Комментарии:

1. И сказать, что я не знаю значения первой строки?

2. За исключением необходимости менять индекс ($i -eq 0) это работает!