Comment vérifier si un fichier contient une chaîne spécifique en utilisant PowerShell

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

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.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Auteur: John Wachira
John Wachira avatar John Wachira avatar

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.

LinkedIn

Article connexe - PowerShell String