Ein Befehl wie Linux „tail“ in PowerShell?

Ein Befehl wie Linux „tail“ in PowerShell?

Wie kann ich das Verhalten des Linux-Tails in PowerShell replizieren?

Ich führe eine Anwendung aus, die eine Protokolldatei ( error.log) schreibt, und ich möchte die letzten Zeilen daraus sehen und die Konsole über Änderungen auf dem Laufenden halten.

Gibt es also ein Äquivalent zu etwas Ähnlichem tail -f filenamein PowerShell?

Antwort1

Ab PowerShell 3 unterstützt das Get-Content(Alias ​​) Cmdlet und Parameter, wenn es auf einem Dateisystem verwendet wird. Suchen Sie danach mit .gc-Tail-Waithelp gc

Antwort2

Das native PS-Äquivalent seit PSv3 ist

Get-Content -Last n

was auch schnell ist. In PSv2 und darunter muss man sich begnügen mit

Get-Content filename | Select -Last n

Dies hat jedoch mehrere Nachteile. Beispielsweise kann es nicht blockieren und auf neue Änderungen an der Datei warten und ist auch nicht sehr effizient, da es die Datei von Anfang an vollständig lesen muss, bevor es die letzten Zeilen anzeigen kann.

PSCXhat einen Get-FileTailBefehl, der einen -WaitParameter hat:

Name

Get-FileTail

Zusammenfassung

PSCX-Cmdlet: Verfolgt den Inhalt einer Datei – wartet optional auf neuen Inhalt.

Syntax

Get-FileTail [-Path] <String[]> [-Count <Int32>] [-Encoding <EncodingParameter>] [-LineTerminator <String>]
[-Wait] [<CommonParameters>]

Get-FileTail [-LiteralPath] <String[]> [-Count <Int32>] [-Encoding <EncodingParameter>] [-LineTerminator <String>]
[-Wait] [<CommonParameters>]

Beschreibung

Diese Implementierung liest den Inhalt einer Datei effizient aus, indem Zeilen vom Ende gelesen werden, anstatt die gesamte Datei zu verarbeiten. Dieses Verhalten ist entscheidend für das effiziente Auslesen großer Protokolldateien und großer Protokolldateien über ein Netzwerk. Sie können den WaitParameter auch angeben, damit das Cmdlet wartet und neuen Inhalt anzeigt, während er in die Datei geschrieben wird. Verwenden Sie Ctrl+, Cum aus der Warteschleife auszubrechen. Beachten Sie, dass das Cmdlet versucht, die Kodierung automatisch zu erkennen, indem es das erste Zeichen aus der Datei liest, wenn keine Kodierung angegeben ist. Wenn noch kein Zeichen in die Datei geschrieben wurde, verwendet das Cmdlet standardmäßig die Unicode-Kodierung. Sie können dieses Verhalten überschreiben, indem Sie die Kodierung explizit über den Parameter „Kodierung“ angeben.

Get-FileTailwird tailstandardmäßig als Alias ​​verwendet, wenn Sie PSCX installieren.

verwandte Informationen