Windows PowerShell-Befehle zum Erreichen des Unix-Tail-Befehls

Migel Hewage Nimesha 11 Dezember 2023
  1. tail in Win 32, um die Unix-Befehlsfunktion tail zu erreichen
  2. Windows PowerShell mit Get-Content zum Erreichen der Unix-Befehlsfunktion tail
  3. Windows PowerShell mit Cat, um die Unix-Befehlsfunktion tail zu erreichen
Windows PowerShell-Befehle zum Erreichen des Unix-Tail-Befehls

Das Unix-Betriebssystem enthält den OS-Befehl tail. Der Zweck des tail-Programms besteht darin, das Ende einer Textdatei/von geleiteten Daten anzuzeigen.

Die erwartete Ausgabe sind die letzten Zeilen einer Datei. Die Anzahl der Zeilen kann variiert werden. Derselbe Befehl kann mit mehr als einer Datei gleichzeitig verwendet werden, um die Standardausgabe zu drucken.

Neben Unix unterstützt der Befehl tail Unix-ähnliche Systeme sowie FreeDOS- und MSX-DOS-Systeme.

In Windows PowerShell, der Windows-Version einer plattformübergreifenden Anwendung, können Befehlszeilen-Shell-Befehle ausgeführt werden, um eine Automatisierung verschiedener Funktionalitäten zu erreichen. Die hier verwendeten Befehle weichen jedoch von Standard-Skriptbefehlen ab, die in Unix-ähnlichen Systemen verwendet werden.

Es gibt mehrere akzeptable Möglichkeiten, eine tail-ähnliche Funktion in Windows PowerShell auszuführen.

tail in Win 32, um die Unix-Befehlsfunktion tail zu erreichen

Eine der üblichen Methoden, um diese Funktionalität zu erreichen, wäre die Verwendung des Programms tail-f für Windows PowerShell; Schwanz für Win32. Es verfolgt alle Dateiänderungen und ermöglicht dem Benutzer, Änderungen in Echtzeit zu verfolgen. Es erfordert jedoch, dass Benutzer vollständig ein anderes Programm verwenden, das über den Link verfügbar ist: https://tailforwin32.sourceforge.net. Daher ist es keine geeignete Lösung für einen Benutzer, der nach einer PowerShell-spezifischen Alternative für das Windows-System sucht.

Allerdings gibt es auch hierfür einige akzeptable PowerShell-basierte Lösungen.

Windows PowerShell mit Get-Content zum Erreichen der Unix-Befehlsfunktion tail

Am effektivsten ist die Verwendung von Get-Content. Darauf folgt -Tail n, wobei n die Anzahl der Zeilen ist, die Sie als Ausgabe erhalten müssen.

In den früheren Versionen von Windows Power Shell, V1 und V2, wurde diese Funktionalität durch den Befehl Get-Content gefolgt vom Befehl -Wait erreicht. Wenn sich die Datei in Echtzeit ändert, wird der Befehl Wait verwendet, damit alle Änderungen verfolgt werden können.

Get-Content .\DummyLogFile.txt

Hier würde die Ausgabe den Inhalt der gesamten Datei erhalten, wie unten gezeigt. Es beginnt mit den allerersten Zeilen der Protokolldatei und setzt sich bis zum Ende fort.

2021-12-31 14:49:47, Info                  CBS    TI: --- Initializing Trusted Installer ---
2021-12-31 14:49:47, Info                  CBS    TI: Last boot time: 2021-12-31 12:41:44.516
2021-12-31 14:49:47, Info                  CBS    Startup processing thread terminated normally
2021-12-31 14:49:47, Info                  CBS    TI: Startup Processing completes, release startup processing lock.
.
.

Allerdings können Echtzeit-Änderungen am Dateiende verfolgt werden, wenn es mit - Wait verwendet wird.

Get-Content .\DummyLogFile.txt -Wait

Hier würde die Ausgabe alle Dateidaten enthalten und auf die Änderungen unten warten.

2021-12-31 14:49:47, Info                  CBS    TI: --- Initializing Trusted Installer ---
2021-12-31 14:49:47, Info                  CBS    TI: Last boot time: 2021-12-31 12:41:44.516
2021-12-31 14:49:47, Info                  CBS    Startup processing thread terminated normally
2021-12-31 14:49:47, Info                  CBS    TI: Startup Processing completes, release startup processing lock.
_

Später in den Versionen nach V2 von PowerShell unterstützt V3 das Schlüsselwort -Tail. Daher können Sie nur die erforderlichen letzten Zeilen in der Vorschau anzeigen, anstatt die gesamte Datei zu erhalten.

 Get-Content .\DummyLogFile.txt -Tail 4

Die angegebene Ausgabe sind die letzten vier Zeilen des angegebenen Textes. 4 ist ein variabler Wert von n, der dem tail-Befehl folgt, um die Anzahl der Tail-Zeilen darunter einzuschließen.

C:\Users>  Get-Content .\DummyLogFile.txt -Tail 4
2022-01-06 08:58:10, Info                  CBS    Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info                  CBS    Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info                  CBS    Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info                  CBS    Ending TrustedInstaller finalization.
PS C:\Users>

Wenn der Benutzer Echtzeitdaten benötigt, wie in einer Protokolldatei, einer sich ständig ändernden Datei, ist es möglich, den Befehl -Wait hinzuzufügen. Wenn neue letzte Zeilen hinzugefügt werden, wird die Ausgabe aktualisiert, um alle neuen Zeilen zu drucken.

PS C:\Users> Get-Content .\DummyLogFile.txt -Wait -Tail 4

Die Ausgabe würde auf Änderungen warten.

Get-Content .\DummyLogFile.txt -Wait -Tail 4
2022-01-06 08:58:10, Info                  CBS    Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info                  CBS    Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info                  CBS    Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info                  CBS    Ending TrustedInstaller finalization.

Wenn Sie jedoch -wait mit einem größeren Endwert verwenden, lassen Sie das System in einer sich ständig ändernden Datei wie einer Protokolldatei warten. Dies führt dazu, dass ein großer Speicherverbrauch auftritt. Daher ist es wichtig, auf den Dateityp zu achten, den Sie zusammen mit den Befehlen -wait -tail verwenden.

Windows PowerShell mit Cat, um die Unix-Befehlsfunktion tail zu erreichen

Für Benutzer, die mit Unix-ähnlichen Systemen besser vertraut sind, wäre es praktisch, den Befehl cat zu verwenden.

PS C:\Users> cat .\DummyLogFile.txt

Nur die Verwendung des cat-Befehls würde den Inhalt der Textdatei ausgeben oder drucken, ähnlich wie nur Get-Content.

2021-12-31 14:49:47, Info                  CBS    TI: --- Initializing Trusted Installer ---
2021-12-31 14:49:47, Info                  CBS    TI: Last boot time: 2021-12-31 12:41:44.516
2021-12-31 14:49:47, Info                  CBS    Startup processing thread terminated normally
2021-12-31 14:49:47, Info                  CBS    TI: Startup Processing completes, release startup processing lock.
 ...

Die Verwendung von cat mit dem Befehl -Tail n (n ist die Anzahl der letzten Zeilen, die in der Ausgabe erforderlich sind) würde jedoch eine ähnliche Ausgabe wie der tail-Befehl in Unix liefern.

PS C:\Users> cat .\DummyLogFile.txt -Tail 4

Die Ausgabe des Codes wäre wie folgt.

C:\Users>  cat .\DummyLogFile.txt -Tail 4
2022-01-06 08:58:10, Info                  CBS    Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info                  CBS    Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info                  CBS    Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info                  CBS    Ending TrustedInstaller finalization.
PS C:\Users>

Bei Bedarf kann der cat-Befehl auch mit dem Wait-Befehl verwendet werden, um die Echtzeit-Änderungen an den Textdateien, wie Log-Dateien in einem System, zu verfolgen.

PS C:\Users> cat .\DummyLogFile.txt -Tail 4 -Wait

Daher würde die Ausgabe ausgegeben werden, und das System wartet auf Änderungen in der/den angegebenen Datei(en). Dann würden diese geänderten Datei-Tail-Zeilen von der PowerShell als Ausgabe gedruckt.

Get-Content .\DummyLogFile.txt -Wait -Tail 4
2022-01-06 08:58:10, Info                  CBS    Ending the TrustedInstaller main loop.
2022-01-06 08:58:10, Info                  CBS    Starting TrustedInstaller finalization.
2022-01-06 08:58:10, Info                  CBS    Lock: Lock removed: WinlogonNotifyLock, level: 8, total lock:6
2022-01-06 08:58:10, Info                  CBS    Ending TrustedInstaller finalization.
_

Linux tail wird am häufigsten verwendet, um verschiedene Protokolldateien in Linux und Linux-ähnlichen Systemen zu verfolgen. Daher muss PowerShell, mit dem Windows-Benutzer Befehlszeilenskripts ausführen können, um bestimmte ähnliche Funktionen zu erreichen, über eine solche Funktionalität verfügen.

In neueren PowerShell-Versionen wird der tail-Befehl zusammen mit den oben beschriebenen Get-Content- oder cat-Befehlen verwendet, und der wait-Befehl wird verwendet, um alle Änderungen in Echtzeit zu verfolgen.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.