Comment vérifier si un fichier contient une chaîne spécifique en utilisant PowerShell
-
Vérifier si un fichier contient une chaîne spécifique en utilisant
Select-String
dans PowerShell -
Vérifier si un fichier contient une chaîne spécifique en utilisant
Get-Content
dans PowerShell - Vérifier plusieurs fichiers qui contiennent une chaîne spécifique
- Conclusion

La recherche d’une chaîne spécifique dans un fichier texte est une tâche courante lors de l’utilisation de Windows PowerShell. Alors que les environnements Unix et Linux ont la commande fiable grep
, PowerShell offre une approche alternative en utilisant les cmdlets Select-String
, Get-Content
et Get-ChildItem
.
Dans cet article, nous allons explorer diverses méthodes pour utiliser PowerShell afin de trouver une chaîne dans un fichier texte.
Vérifier si un fichier contient une chaîne spécifique en utilisant Select-String
dans PowerShell
Disons que nous avons un fichier Demo.txt
sur notre machine, et nous voulons trouver la chaîne Demonstration
dans celui-ci.
Voici le script PowerShell pour cela :
Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern 'Demonstration'
Dans ce script, nous utilisons Select-String
avec le paramètre -Path
pour spécifier l’emplacement du fichier et le paramètre -Pattern
pour spécifier la chaîne que nous recherchons.
Si notre fichier contient le motif spécifié ('Demonstration'
), la console affichera le nom du fichier, le numéro de ligne et la ligne contenant la chaîne.
Sortie :
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
La sortie ci-dessus affiche le fichier Demo.txt
avec son chemin complet, la ligne contenant notre chaîne (ligne 1
), et la ligne contenant la chaîne elle-même (This is purely for demonstration
).
Mais que faire si nous avons seulement besoin de savoir si le fichier contient ou ne contient pas la chaîne ? Dans ce cas, nous pouvons modifier le script comme suit :
$Knw = Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern "Demonstration"
if ($Knw -ne $null) {
echo Contains String
}
else {
echo Does not Contain String
}
Dans ce script, nous avons défini une variable appelée $Knw
, qui contient le résultat de la chaîne recherchée "Demonstration"
dans le fichier situé au chemin spécifié en utilisant Select-String
. Ensuite, nous vérifions si la variable $Knw
n’est pas égale à $null
, ce qui signifie qu’une correspondance a été trouvée dans le fichier.
Si une correspondance est trouvée, cela affiche "Contains String."
. Si aucune correspondance n’est trouvée, cela affiche "Does not Contain String."
.
Sortie :
Contains String
Puisque notre fichier contient le motif "Demonstration"
, la sortie affiche Contains String
.
Vérifier si un fichier contient une chaîne spécifique en utilisant Get-Content
dans PowerShell
Get-Content
est un cmdlet qui récupère le contenu d’un chemin spécifié vers un fichier et lit le contenu du fichier pour renvoyer un objet chaîne. Pour utiliser Get-Content
dans notre fichier Demo.txt
, nous allons utiliser le script illustré ci-dessous :
Get-Content -Path C:\Users\pc\Demo\Demo.txt | Select-String -Pattern "Demonstration"
Dans ce script, nous utilisons Get-Content
pour lire le contenu de notre fichier Demo.txt
spécifié par le paramètre -Path
et le transférons à la commande Select-String
, qui utilise le paramètre -Pattern
pour localiser la chaîne Demonstration
.
Sortie :
This purely for demonstration
Si nous voulons seulement confirmer la présence de la chaîne, nous pouvons utiliser le script montré ci-dessous :
If (Get-Content C:\Users\pc\Demo\Demo.txt | % { $_ -match "Demonstration" }) {
echo Contains String
}
else {
echo Does not Contains String
}
Dans ce script, nous utilisons Get-Content
pour lire les données du fichier situé à C:\Users\pc\Demo\Demo.txt
et un pipeline (|
) pour traiter chaque ligne du fichier une par une. À l’intérieur du bloc %{}
, nous vérifions si chaque ligne contient la chaîne "Demonstration"
en utilisant l’opérateur -match
.
Si une ligne dans le fichier contient "Demonstration"
, cela affiche "Contains String"
. Si aucune ligne dans le fichier ne contient "Demonstration"
, cela affiche "Does not Contains String"
.
Sortie :
Contains String
Puisque notre fichier contient la chaîne spécifiée ("Demonstration"
), nous obtenons Contains String
comme sortie.
Vérifier plusieurs fichiers qui contiennent une chaîne spécifique
Que faire si vous avez plus de cinquante fichiers texte, et que vous souhaitez rechercher une chaîne dans tous ? Nous discuterons de deux façons de le faire.
Utiliser Get-ChildItem
et Search-String
dans PowerShell
Nous pouvons utiliser les cmdlets Get-ChildItem
et Select-String
. Le cmdlet Get-ChildItem
trouvera un ou plusieurs fichiers en fonction de nos critères de recherche.
Prenons un exemple. Supposons que notre dossier Demo
ait plus de cinquante fichiers texte, nous pouvons rechercher la chaîne Demonstration
dans tous en utilisant ce script :
Get-ChildItem -Path C:\Users\pc\Demo\ -Recurse | Select-String -Pattern 'Demonstration'
Dans ce script, nous utilisons Get-ChildItem
pour lister les fichiers dans le répertoire spécifié (-Path
) et ses sous-répertoires (-Recurse
). L’opérateur pipe (|
) transmet la liste des fichiers au cmdlet Select-String
.
Enfin, nous utilisons Select-String
pour rechercher un motif spécifique, 'Demonstration'
dans chaque fichier.
La console affichera les noms des fichiers contenant notre chaîne, les numéros de ligne et les lignes contenant la chaîne.
Sortie :
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem
Utiliser Select-String
dans PowerShell
Nous pouvons également utiliser uniquement Select-String
pour vérifier la chaîne spécifique sur plusieurs fichiers.
Select-String -Path C:\Users\pc\Demo\*.txt -Pattern 'Demonstration'
Dans ce script, nous utilisons le caractère générique (*
) dans le paramètre -Path
pour rechercher tous les fichiers texte dans le dossier Demo
. Le cmdlet Select-String
recherchera la chaîne dans tous les fichiers correspondants.
Sortie :
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem
Comme ci-dessus, la console affichera les noms des fichiers contenant notre chaîne, les numéros de ligne et les lignes contenant la chaîne.
Conclusion
Windows PowerShell fournit un ensemble d’outils pour rechercher efficacement des chaînes dans des fichiers texte. Que vous préfériez utiliser Select-String
, Get-Content
, ou une combinaison de Get-ChildItem
et Select-String
, vous pouvez facilement localiser et manipuler les données dans vos fichiers.
Avec ces cmdlets, vous n’aurez aucune difficulté à trouver les informations dont vous avez besoin, rendant la recherche dans les fichiers texte sous PowerShell sans effort.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedInArticle connexe - PowerShell String
- Comment convertir une chaîne sécurisée en texte brut dans PowerShell
- Comment extraire une sous-chaîne PowerShell d'une chaîne
- Comment générer des chaînes aléatoires en utilisant PowerShell
- Comment remplacer un texte dans un fichier en utilisant PowerShell
- Comment supprimer les espaces d'une variable en utilisant PowerShell
- Comment trouver la position d'une sous-chaîne dans PowerShell