Avec l’automatisation, la lecture de données à partir d’un fichier texte est un scénario courant. La plupart des langages de programmation ont au moins une méthode pour lire des fichiers texte, et PowerShell ne fait pas exception. La cmdlet PowerShell Get-Content
, équivalent à la commande tail de PowerShell, lit le contenu d’un fichier texte et importe les données dans une session PowerShell.
La cmdlet PowerShell Get-Content
est un outil indispensable lorsque vous avez besoin d’utiliser des fichiers texte en tant qu’entrée pour votre script. Peut-être que votre script PowerShell doit lire une liste d’ordinateurs à surveiller ou importer un modèle d’e-mail à envoyer à vos utilisateurs. Get-Content
de PowerShell prend en charge facilement ces scénarios!
Et que diriez-vous de suivre un fichier journal en temps réel ? Oui, la cmdlet Get-Content
de PowerShell peut le faire aussi ! Continuez à lire cet article, et vous apprendrez comment utiliser la cmdlet Get-Content
pour lire des fichiers texte dans PowerShell.
Prérequis
Si vous souhaitez suivre les exemples de ce tutoriel, vous aurez besoin des éléments suivants.
- Vous aurez besoin d’un ordinateur exécutant Windows 10. Ce tutoriel utilise la version 20H2 de Windows 10. Mais ne vous inquiétez pas, vous serez bien avec la version de Windows 10 que vous avez.
- Vous devriez avoir au moins Windows PowerShell 5.1, ou PowerShell 7.1 installé sur votre ordinateur. Ici, PowerShell 7.1 est utilisé, mais n’importe quelle version fonctionnera !
- Vous allez rédiger et tester des commandes, donc vous aurez besoin d’un éditeur de code. Les éditeurs recommandés sont Windows PowerShell ISE, intégré à Windows, et Visual Studio Code (VSCode). Cet article utilise VSCode.
- Il sera également utile de créer un répertoire de travail sur votre ordinateur. Le dossier de travail peut être situé n’importe où. Cependant, vous remarquerez que les exemples dans ce tutoriel résident dans le dossier C:\demo.
- Pour commencer, vous avez besoin de contenu ! Créez un fichier, dans votre répertoire de travail, avec le nom fruits.txt qui inclut dix fruits différents pour plus de simplicité. Vous utiliserez ce fichier texte dans tous les exemples.
Vous ne savez pas quelle version de PowerShell vous avez ? Visitez l’article Comment vérifier votre version de PowerShell (Toutes les méthodes !).
Lecture d’un fichier texte et renvoi du résultat en tant qu’ensemble de chaînes de caractères
La cmdlet Get-Content
lit le contenu d’un fichier et, par défaut, renvoie chaque ligne d’un fichier texte en tant qu’objet chaîne de caractères. En conséquence, la collection d’objets PowerShell devient un tableau d’objets chaîne de caractères.
Le code ci-dessous lit le contenu du fichier fruits.txt et affiche le résultat sur la console PowerShell comme indiqué dans la capture d’écran ci-dessous.

Get-Content
.Get-Content
lit et stocke le contenu en tant qu’ensemble, mais comment en être sûr ? Enregistrez d’abord le contenu dans un objet PowerShell que vous pouvez ensuite examiner pour déterminer le type.
En regardant la capture d’écran ci-dessous, la variable $fruits
est un tableau qui contient dix objets. Chaque objet représente une seule ligne de texte.

Retourner une ligne spécifique d’un fichier texte
Dans l’exemple précédent, vous avez appris que le résultat par défaut de Get-Content
est un tableau ou une collection d’objets. Chaque élément dans une collection correspond à un numéro d’index, et les index PowerShell commencent généralement à zéro.
La capture d’écran ci-dessous montre qu’il y a dix éléments dans le tableau de chaînes de caractères. Le tableau a indexé les dix éléments de zéro à neuf.

Pour afficher uniquement la cinquième ligne de contenu, vous devrez spécifier le numéro d’index 4
, entre crochets (appelé notation de tableau).
Vous remarquerez peut-être que la commande
Get-Content
est enfermée entre parenthèses. Cette notation indique à PowerShell d’exécuter la commande enfermée entre parenthèses d’abord avant les autres opérations.
Dans la capture d’écran ci-dessous, vous verrez que le seul résultat retourné est framboise
, qui est l’élément à l’index 4
et correspond à la cinquième ligne dans le fichier texte.

Get-Content
results.Que se passe-t-il si vous avez besoin d’obtenir le contenu de la dernière ligne ? Heureusement, vous n’avez pas besoin de connaître le nombre total de lignes. Au lieu de cela, utilisez [-1]
comme index, et Get-Content
affichera uniquement la dernière ligne du fichier.
Limitez le nombre de résultats principaux retournés par Get-Content
Utilisez le paramètre TotalCount
de Get-Content
pour récupérer un nombre spécifié de lignes à partir d’un fichier texte. Le paramètre TotalCount
accepte une valeur longue, ce qui signifie une valeur maximale de 9 223 372 036 854 775 807.
Par exemple, la commande ci-dessous lit le contenu et limite le résultat à trois éléments.
Comme prévu, le résultat ci-dessous affiche uniquement les trois premières lignes du début du fichier texte.

Get-Content
command and the TotalCount
parameter.Utilisez le paramètre PowerShell Tail pour renvoyer les résultats à partir de la fin d’un fichier
Dans l’exemple précédent, vous avez utilisé la commande PowerShell Get-Content
pour lire un fichier texte et limiter les résultats supérieurs. Il est également possible de réaliser l’inverse avec PowerShell Get-Content
. Utilisez le paramètre PowerShell Tail
pour lire un nombre spécifié de lignes à partir de la fin d’un fichier.
Le code d’exemple ci-dessous lit le fichier texte et affiche le contenu des quatre dernières lignes.
Après l’exécution de la commande PowerShell tail
, le résultat attendu sera limité aux quatre dernières lignes du contenu, comme indiqué dans l’image ci-dessous.

Get-Content
Tail
parameter. Le paramètre Tail
est souvent utilisé conjointement avec le paramètre Wait
. L’utilisation du paramètre Wait
maintient le fichier ouvert et vérifie s’il y a un nouveau contenu toutes les secondes. La démonstration ci-dessous montre les paramètres Tail
et Wait
en action. Pour quitter Wait
, utilisez la combinaison de touches CTRL+C
.

wait
and Tail
parameters with Get-Content
.Retournant les résultats en tant que seule chaîne
Vous avez peut-être remarqué dans les exemples précédents que vous avez manipulé des tableaux de chaînes en tant que sortie de la commande PowerShell Get-Content
. Et comme vous l’avez appris jusqu’à présent, la nature des tableaux vous permet d’opérer sur le contenu un élément à la fois.
Les tableaux fonctionnent souvent bien mais peuvent rendre le remplacement de chaînes plus difficile. Le paramètre Raw
de la commande Get-Content
lit l’ensemble du contenu d’un fichier dans un objet chaîne unique. Bien que le code ci-dessous soit le même que celui utilisé dans le premier exemple, le paramètre Raw
stocke le contenu du fichier en tant que chaîne unique.
La capture d’écran ci-dessous montre qu’ajouter le paramètre Raw
à Get-Content
a pour effet de traiter le contenu comme une seule chaîne et non comme un tableau d’objets.

Raw
parameter of Get-Content
reads the file content as a single string object.Une fois que vous avez le contenu d’un fichier dans une seule chaîne en utilisant le paramètre Raw
, que pouvez-vous en faire? Peut-être avez-vous besoin de trouver et de remplacer une chaîne à l’intérieur du contenu de ce fichier. Dans l’exemple ci-dessous, Get-Content
lit le contenu d’un fichier en tant que chaîne unique. Ensuite, en utilisant l’opérateur replace
, remplacez un mot spécifique par un autre.
Connexe: Recherche et remplacement de chaînes

replace
operator.Lire le contenu uniquement des fichiers correspondant à un filtre
Avez-vous un dossier rempli de fichiers mais avez besoin de lire le contenu de quelques-uns seulement ? Avec PowerShell Get-Content
, vous n’avez pas besoin de filtrer les fichiers séparément avant de lire leur contenu. Le paramètre Filtre
de Get-Content
limite les fichiers que la cmdlet lit.
Pour démontrer la lecture du contenu de seulement certains fichiers, commencez par créer quelques fichiers à lire. Comme indiqué ci-dessous, créez les fichiers dans votre dossier de travail en utilisant Add-Content
.

.log
files using Add-Content
.Avec vos fichiers de test créés, utilisez les paramètres Filtre
et Chemin
pour ne lire que les fichiers .log
dans le répertoire racine. L’astérisque utilisé dans la définition du filtre indique à Get-Content
de lire n’importe quel fichier se terminant par .log
. L’astérisque de fin du paramètre de chemin limite la lecture des fichiers uniquement au répertoire racine.
Comme le montre la sortie ci-dessous, seul le contenu des fichiers .log
est affiché.

Filter
parameter with PowerShell Get-Content
to limit the read files.Connexe : Get-ChildItem : Listing Files, Registry, Certificates, and More as One
Lecture de la flux de données alternatif d’un fichier
Jusqu’à présent, vous avez travaillé exclusivement avec des fichiers texte, mais Get-Content
peut lire les données du flux de données alternatif (ADS) d’un fichier. N’hésitez pas à en savoir plus sur les flux, mais vous pouvez considérer un flux comme un autre attribut de données stocké aux côtés du contenu de fichier typique.
Les flux de données alternatifs sont une fonctionnalité du système de fichiers NTFS de Windows, donc cela ne s’applique pas à
Get-Content
lorsqu’il est utilisé avec des systèmes d’exploitation non-Windows.
Vous pouvez voir les flux de données alternatifs en exécutant Get-Item
avec le paramètre Stream
. Lorsque vous référencez un fichier en utilisant le paramètre Stream
, Get-Item
renvoie une propriété appelée Stream
comme indiqué ci-dessous. Ce flux de contenu de fichier par défaut est représenté par :$DATA
.
Pour démontrer le flux par défaut :$DATA
, utilisez la cmdlet Get-Item
pour afficher tous les flux disponibles dans le fichier fruits.txt. Comme indiqué ci-dessous, Get-Item
affiche un seul flux.

Get-Item
.Le paramètre Stream
de Get-Content
lit explicitement le contenu du flux par défaut :$DATA
comme indiqué ci-dessous. Le contenu renvoyé est le même que la sortie par défaut de Get-Content
car le flux :$DATA
est lu par défaut.

:$DATA
stream using Get-Content
.Pour démontrer la récupération d’un flux de données alternatif en utilisant Get-Content
, modifiez un fichier en utilisant Add-Content
pour ajouter le nouveau flux. Utilisez Get-Item
pour afficher le nouveau flux aux côtés du flux par défaut :$DATA
, comme le montre l’exemple ci-dessous.

Comme seul le flux :$DATA
est lu par défaut, utilisez le paramètre Stream
de Get-Content
pour récupérer le contenu du nouveau flux Secret
. Comme indiqué ci-dessous, le contenu du flux Secret
est affiché au lieu du contenu par défaut du fichier.

Get-Content
to read the Secret
alternate data stream content.Étapes suivantes avec PowerShell Get-Content
Dans cet article, vous avez appris de nombreuses façons d’utiliser Get-Content
pour lire et manipuler le contenu. Vous avez même appris que Get-Content
est assez flexible pour lire le contenu à partir de flux de données alternatifs!
Avec ce que vous avez appris dans cet article, quelles autres façons pouvez-vous utiliser Get-Content
dans votre travail? Peut-être pouvez-vous utiliser Get-Content
pour déterminer si un fichier de sauvegarde est obsolète et déclencher un appel automatique pour exécuter une tâche de sauvegarde?
Source:
https://adamtheautomator.com/powershell-get-content/