Commandes Windows PowerShell pour obtenir la commande Unix Tail

Migel Hewage Nimesha 11 décembre 2023
  1. tail dans Win 32 pour obtenir la fonction de commande Unix tail
  2. Windows PowerShell avec Get-Content pour obtenir la fonction de commande Unix tail
  3. Windows PowerShell avec Cat pour réaliser la fonction de commande Unix tail
Commandes Windows PowerShell pour obtenir la commande Unix Tail

Le système d’exploitation Unix contient la commande tail. Le but du programme tail est d’afficher la fin d’un fichier texte/données canalisées.

La sortie attendue est les dernières lignes d’un fichier. Le nombre de lignes peut être modifié. La même commande peut être utilisée avec plusieurs fichiers à la fois pour imprimer la sortie standard.

Outre Unix, la commande tail prend en charge les systèmes de type Unix et les systèmes FreeDOS et MSX-DOS.

Dans Windows PowerShell, la version Windows d’une application multiplateforme, les commandes shell de ligne de commande peuvent être exécutées pour réaliser l’automatisation dans différentes fonctionnalités. Cependant, les commandes utilisées ici diffèrent des commandes de script standard utilisées dans les systèmes de type Unix.

Il existe plusieurs façons acceptables de faire une fonction similaire tail dans Windows PowerShell.

tail dans Win 32 pour obtenir la fonction de commande Unix tail

L’un des moyens courants d’obtenir cette fonctionnalité serait d’utiliser le programme tail-f pour Windows PowerShell ; Queue pour Win32. Il suit toutes les modifications de fichiers et permet à l’utilisateur de suivre les modifications en temps réel. Cependant, il oblige les utilisateurs à utiliser entièrement un autre programme, disponible via le lien : https://tailforwin32.sourceforge.net. Par conséquent, ce n’est pas une solution appropriée pour un utilisateur qui recherche une alternative spécifique à PowerShell pour le système Windows.

Cependant, il existe également des solutions acceptables basées sur PowerShell pour cela.

Windows PowerShell avec Get-Content pour obtenir la fonction de commande Unix tail

L’un des plus efficaces consiste à utiliser Get-Content. Il doit être suivi de -Tail n, n étant le nombre de lignes que vous devez obtenir en sortie.

Dans les versions antérieures de Windows Power Shell, V1 et V2, cette fonctionnalité était obtenue via la commande Get-Content suivie de la commande -Wait. Si le fichier change en temps réel, la commande Wait est utilisée afin que tout changement puisse être suivi.

Get-Content .\DummyLogFile.txt

Ici, la sortie obtiendrait le contenu de l’ensemble du fichier, comme indiqué ci-dessous. Il commence dès les premières lignes du fichier journal et se poursuit jusqu’à la fin.

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.
.
.

Cependant, les modifications en temps réel de la fin du fichier peuvent être suivies lorsqu’elles sont utilisées avec - Wait.

Get-Content .\DummyLogFile.txt -Wait

Ici, la sortie contiendrait toutes les données du fichier et attendrait les modifications ci-dessous.

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.
_

Plus tard dans les versions suivant la V2 de PowerShell, la V3 prend en charge le mot-clé -Tail. Par conséquent, vous pouvez prévisualiser uniquement les dernières lignes requises plutôt que d’obtenir l’intégralité du fichier.

 Get-Content .\DummyLogFile.txt -Tail 4

La sortie donnée correspond aux quatre dernières lignes du texte donné. 4 est une valeur variable de n, suivant la commande tail pour inclure le nombre de lignes de queue ci-dessous.

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>

Lorsque l’utilisateur a besoin de données en temps réel, comme dans un fichier journal, un fichier en constante évolution, il est possible d’ajouter la commande -Wait. Lorsque de nouvelles dernières lignes sont ajoutées, la sortie est mise à jour pour imprimer toutes les nouvelles lignes.

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

La sortie attendrait les modifications.

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.

Cependant, lorsque vous utilisez -wait avec une valeur de queue plus grande, vous laissez le système attendre dans un fichier en constante évolution, tel qu’un fichier journal. Il en résulte une grande consommation de mémoire. Par conséquent, il est important de faire attention au type de fichier que vous utilisez ensemble avec les commandes -wait -tail.

Windows PowerShell avec Cat pour réaliser la fonction de commande Unix tail

Il serait pratique pour les utilisateurs qui sont plus familiers avec les systèmes de type Unix d’utiliser la commande cat.

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

L’utilisation de la commande cat uniquement afficherait ou imprimerait le contenu du fichier texte, similaire à Get-Content uniquement.

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.
 ...

Cependant, l’utilisation de cat avec la commande -Tail n (n étant le nombre de lignes finales requises dans la sortie) fournirait une sortie similaire à la commande tail sous Unix.

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

La sortie du code serait la suivante.

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>

Si nécessaire, la commande cat peut également être utilisée avec la commande Wait pour suivre les modifications en temps réel des fichiers texte, comme les fichiers journaux d’un système.

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

Par conséquent, la sortie serait donnée et le système attendrait toute modification dans le ou les fichiers donnés. Ensuite, ces lignes de queue de fichier modifiées seraient imprimées par le PowerShell en tant que sortie.

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.
_

La queue Linux est le plus souvent utilisée pour suivre différents fichiers journaux dans les systèmes Linux et similaires. Par conséquent, PowerShell, qui permet aux utilisateurs Windows d’exécuter des scripts de ligne de commande pour réaliser certaines fonctions similaires, doit disposer de telles fonctionnalités.

Dans les nouvelles versions de PowerShell, la commande tail est utilisée avec les commandes Get-Content ou cat décrites ci-dessus, et la commande wait est utilisée pour suivre les modifications en temps réel.

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.