Цветовая кодировка результатов get-контента - PullRequest
8 голосов
/ 26 мая 2011

У меня есть скрипт powershell, который отслеживает файл журнала, отфильтровывает интересные биты, а затем представляет эти биты мне по мере их записи в файл.Работает чудесно.Интересная линия:

get-content "$logFile" -wait | where { select-string $searchTerm -inp $_ }

Теперь я хочу выглядеть модно!

Мне бы хотелось, чтобы цвет шрифта менялся каждый раз, когда встречается определенный термин.Я могу достаточно легко установить цвет шрифта, но как бы вы сделали это на лету с помощью приведенного выше заявления?

Редактировать: Разобрался, но не могу опубликовать ответна 8 часов.Выложу завтра.

Ответы [ 2 ]

8 голосов
/ 13 марта 2015

Если вы ищете что-то, что обеспечивает выборочное цветовое кодирование, попробуйте что-то вроде этого.

Сначала настройте вспомогательную функцию для выбора подходящего цвета:

function Get-LogColor {
    Param([Parameter(Position=0)]
    [String]$LogEntry)

    process {
        if ($LogEntry.Contains("DEBUG")) {Return "Green"}
        elseif ($LogEntry.Contains("WARN")) {Return "Yellow"}
        elseif ($LogEntry.Contains("ERROR")) {Return "Red"}
        else {Return "White"}
    }
}

Затем выполните строку, которая выглядит следующим образом:

gc -wait $logFile | ForEach {Write-Host -ForegroundColor (Get-LogColor $_) $_}
7 голосов
/ 26 мая 2011

Попробуйте

Get-Content $logFile -Wait |
  Select-String $searchTerm | 
  ForEach {write-host -ForegroundColor red $_.line}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...