#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)
это работает!