11 Stimmen

Farbkodierung von Suchergebnissen erhalten

Ich habe ein PowerShell-Skript, das eine Log-Datei überwacht, die interessanten Teile filtert und mir diese Teile präsentiert, sobald sie in die Datei geschrieben werden. Funktioniert wunderbar. Die interessante Zeile lautet:

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

Jetzt möchte ich es schicker machen!

Ich möchte die Schriftfarbe ändern, jedes Mal wenn ein bestimmter Begriff gefunden wird. Die Schriftfarbe kann ich leicht ändern, aber wie würde ich es mit dem obigen Statement dynamisch machen?

Bearbeitung: Habe es herausgefunden, aber kann erst in 8 Stunden eine Antwort veröffentlichen. Werde es morgen hochladen.

15voto

StevoInco Punkte 801

Wenn Sie nach etwas suchen, das selektive Farbcodierung bietet, dann versuchen Sie etwas Ähnliches wie dies.

Richten Sie zunächst eine Hilfsfunktion ein, um eine geeignete Farbe auszuwählen:

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

    process {
        if ($LogEntry.Contains("DEBUG")) {Return "Grün"}
        elseif ($LogEntry.Contains("WARN")) {Return "Gelb"}
        elseif ($LogEntry.Contains("ERROR")) {Return "Rot"}
        else {Return "Weiß"}
    }
}

Führen Sie dann eine Zeile aus, die so aussieht:

gc -wait $logFile | ForEach {Write-Host -ForegroundColor (Get-LogColor $_) $_}

7voto

Doug Finke Punkte 6522

Versuchen

Get-Content $logFile -Wait |
  Select-String $searchTerm | 
  ForEach {write-host -ForegroundColor red $_.line}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X