Windows PowerShell-Befehle zum Erreichen des Unix-Tail-Befehls
-
tail
in Win 32, um die Unix-Befehlsfunktiontail
zu erreichen -
Windows PowerShell mit
Get-Content
zum Erreichen der Unix-Befehlsfunktiontail
-
Windows PowerShell mit
Cat
, um die Unix-Befehlsfunktiontail
zu erreichen
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.
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.