Recherche de site Web

Fichier de recherche PowerShell (recherche de fichiers à l'aide de Get-ChildItem)


L'applet de commande Get-ChildItem dans PowerShell est utilisée pour obtenir des éléments dans un ou plusieurs emplacements spécifiés. En utilisant Get-ChildItem, vous pouvez rechercher des fichiers. Vous pouvez facilement rechercher des fichiers par nom et par emplacement, rechercher une chaîne dans un fichier ou rechercher des emplacements de fichiers à l'aide d'un modèle de correspondance.

Très souvent, nous stockons les fichiers n'importe où sur le disque là où ils ne devraient pas être placés, et plus tard, après quelques mois, nous avons tellement de fichiers copiés à différents endroits et restons de manière non organisée.

Si nous essayons de trouver un fichier stocké n'importe où sur le lecteur, l'utilisation d'une recherche manuelle ou d'un filtre de recherche fourni par Windows avec des caractères génériques prend beaucoup de temps et plus de frustration.

Dans cet article, j'expliquerai différentes et meilleures façons possibles de rechercher des fichiers qui correspondent à un modèle ou de rechercher des fichiers par extension dans PowerShell.

PowerShell recherche un fichier à l'aide de Get-ChildItem

Utilisation de la cmdlet PowerShell Get-ChildItem pour afficher une liste de fichiers ou de répertoires dans un ou plusieurs emplacements.

L'applet de commande Get-ChildItem offre plus de flexibilité pour les caractères génériques simples ou avancés permettant de rechercher des fichiers à l'aide d'un modèle de recherche.

Utilisation du paramètre Recurse pour obtenir des éléments de manière récursive à partir de tous les conteneurs enfants. Vous pouvez limiter le paramètre Profondeur pour limiter le nombre de niveaux à récurer.

Applet de commande : Get-ChildItem

Syntaxe:

Get-ChildItem
   [[-Filter] <string>]
   -LiteralPath <string[]>
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Recurse]
   [-Depth <uint32>]
   [-Force]
   [-Name]
   [-Attributes <FlagsExpression[FileAttributes]>]
   [-FollowSymlink]
   [-Directory]
   [-File]
   [-Hidden]
   [-ReadOnly]
   [-System]
   [<CommonParameters>]

Comprenons l'utilisation de PowerShell pour rechercher des fichiers par nom, par extension ou rechercher des fichiers de manière récursive avec différents exemples donnés ci-dessous.

Savez-vous : Utiliser IIS pour obtenir une liste de sites Web dans PowerShell !

PowerShell Rechercher des fichiers par extension dans le répertoire courant

Pour rechercher tous les fichiers par extension dans le répertoire actuel qui correspondent au modèle générique *.txt

PS C:\Temp> Get-ChildItem *.txt

Commande ci-dessus, recherchez les fichiers dans le répertoire actuel qui correspondent à l'extension .txt

PowerShell Rechercher tous les fichiers à la racine du lecteur D:\

Pour rechercher et répertorier tous les fichiers stockés sur l'emplacement du lecteur D:\, l'utilisation de Get-ChildItem est indiquée ci-dessous

PS C:\> Get-ChildItem -Path D:\

La cmdlet Get-ChildItem ci-dessus prend D:\ comme chemin et répertorie tous les répertoires et fichiers stockés sur place. Il affiche les éléments de résultats avec les colonnes Mode, LastWriteTime et Longueur Nom.

PowerShell Rechercher un fichier de manière récursive à l'aide du paramètre Recurse

Pour rechercher et répertorier tous les fichiers stockés sur l’emplacement du lecteur D:\, à l’aide de PowerShell Get-ChildItem avec le paramètre Recurse dans PowerShell.

PS C:\> Get-ChildItem -Path D:\ -Recurse

L'utilisation du paramètre recurse répertoriera tous les fichiers auxquels l'utilisateur a accès. Cependant, en effectuant une opération récursive, si l'utilisateur n'a accès à aucun des éléments de ressource, une erreur sera générée.

Pour continuer l'opération Recurse même en cas d'erreur, en utilisant le paramètre ErrorAction avec silentlyContinue continuez son opération.

PS C:\> Get-ChildItem -Path D:\ -Recurse -ErrorAction SilentlyContinue

Rechercher les fichiers qui ne correspondent pas à l'aide du paramètre d'exclusion

Pour rechercher tous les fichiers du répertoire actuel et du sous-répertoire qui ne correspondent pas au caractère générique PowerShell *.exe, nous pouvons le faire en utilisant le paramètre d'exclusion.

PS D:\Temp> Get-ChildItem -Exclude *.exe -Recurse

Commande ci-dessus, obtenez une liste de tous les fichiers exclude *.exe dans les sous-répertoires à l'aide du paramètre recurse dans PowerShell.

Obtenez une liste de tous les fichiers du répertoire qui correspondent à un modèle

Pour obtenir une liste de tous les fichiers du répertoire et du sous-répertoire qui correspondent au modèle générique PowerShell *.doc,*.docx

PS D:\Temp> Get-ChildItem -Include *.doc,*.docx -File -Recurse -ErrorAction SilentlyContinue

Dans l'exemple ci-dessus, Get-ChildItem utilise le paramètre Include pour rechercher les fichiers *.doc ou *.docx dans le répertoire ou ses sous-répertoires à l'aide de Recurse paramètre.

Utilisez ErrorAction quietlyContinue pour continuer à rechercher des fichiers même sans erreurs.

Commande ci-dessus, recherchez des fichiers et obtenez une liste de tous les fichiers d’un répertoire dans PowerShell.

Rechercher le fichier, tous les éléments des sous-répertoires correspondent à un filtre spécifique

Utilisation du paramètre -Filter pour obtenir la liste de tous les fichiers des sous-répertoires correspondant au filtre *.txt

PS D:\Temp> Get-ChildItem -Filter *.txt -Recurse

Ci-dessus, la commande Get-ChildItem utilise le paramètre Recurse pour itérer de manière récursive dans le dossier et les sous-dossiers et filtrer le paramètre avec *.txt pour obtenir uniquement les fichiers d'extension de fichier *.txt.

Le script PowerShell ci-dessus recherche les fichiers de manière récursive avec l'extension.

Astuce : Remplacez le texte d'une chaîne à l'aide de PowerShell !

PowerShell Rechercher un nom de fichier contenant une chaîne

Pour rechercher tous les fichiers contenant une chaîne dans un ou plusieurs sous-répertoires donnés, utilisez la commande ci-dessous

PS D:\Temp> Get-ChildItem -Recurse | Where {$_.Name -match 'Replace'} | Select Fullname

FullName                  
--------                  
D:\Temp\Replace-Method.txt

Dans l'exemple ci-dessus, Get-ChildItem utilise le paramètre Recurse pour rechercher de manière récursive tous les fichiers.

Utilisation de l'applet de commande Where-Object pour comparer la propriété de nom qui correspond à « Remplacer » et renvoie le nom complet du fichier.

Dans le script ci-dessus, recherchez dans le fichier une chaîne et obtenez le nom de fichier qui correspond à la chaîne.

Nous pouvons également utiliser Get-ChildItem alias gci pour interroger et nommer un fichier contenant une chaîne comme ci-dessous

PS D:\Temp> gci -Recurse | Where {$_.Name -match 'Replace'} | Select Fullname

FullName                  
--------                  
D:\Temp\Replace-Method.txt

PowerShell Rechercher des fichiers dans le répertoire contenant une chaîne

Pour rechercher tous les fichiers du répertoire contenant la chaîne, utilisez la commande ci-dessous

PS D:\Temp> Get-ChildItem -Recurse | Where {$_.DirectoryName -match 'Debug'} | Select Fullname

Dans l'exemple ci-dessus, Get-ChildItem utilise le paramètre Recurse pour rechercher de manière récursive tous les fichiers du répertoire.

Utilisation de la cmdlet Where-Object pour comparer la propriété DirectoryName qui correspond à « Debug » et renvoie le nom complet des fichiers de ce répertoire.

Nous pouvons également utiliser PowerShell Get-ChildItem alias gci pour interroger et répertorier tous les fichiers dans le nom du répertoire contenant une chaîne comme ci-dessous

PS D:\Temp> gci -Recurse | Where {$_.DirectoryName -match 'Debug'} | Select Fullname

PowerShell Rechercher un fichier par WildCard

Pour rechercher tous les fichiers du répertoire ou des sous-répertoires correspondant au caractère générique PowerShell

PS D:\Temp> Get-ChildItem | Where-Object { $_.Name -match '[a-z].txt$' }


    Directory: D:\Temp


Mode                LastWriteTime         Length Name                                                        
----                -------------         ------ ----                                                        
-a----       10-07-2021     11:11            196 Replace-Method.txt  

Dans l'exemple ci-dessus, il recherche les fichiers en utilisant le caractère générique PowerShell comme [a-z].txt$et obtient une liste de tous les fichiers.

Astuce : Paramètres ErrorAction et ErrorVariable dans PowerShell !

PowerShell recherche des fichiers plus anciens que certains jours

Pour rechercher des fichiers plus anciens que certains jours, utilisez PowerShell Get-ChildItem pour obtenir des objets de fichier et comparer la date de création du fichier avec la date actuelle - 15 jours.

 Get-ChildItem -File | Where-Object {$_.CreationTime -lt (Get-Date).AddDays(-15)} | Select Name, CreationTime | sort CreationTime -Descending

Dans le script PowerShell ci-dessus, la première commande récupère l'objet fichier et transmet la sortie à la deuxième commande.

Deuxième commande, Where-Object compare la date de création du fichier avec la date actuelle - 15 jours à l'aide de l'applet de commande Get-Date et transmet la sortie à la troisième commande.

La troisième commande sélectionne le nom du fichier et le format de la date et de l'heure de création du fichier et transmet la sortie à la quatrième commande.

Dans la dernière commande, triez la date et l'heure de création du fichier par ordre décroissant et obtenez une liste des fichiers datant de plus de 15 jours auparavant.

Conclusion

J'espère que vous trouverez utile l'article ci-dessus sur l'utilisation de l'applet de commande PowerShell Get-ChildItem pour rechercher des fichiers qui correspondent aux modèles de recherche ou rechercher des fichiers par extension ou par nom.

J'ai essayé d'expliquer différentes manières de rechercher des fichiers par caractère générique, de fichier par nom, de fichier par emplacement ou répertoire, ou d'obtenir des dossiers uniquement dans le système de fichiers.

Vous pouvez trouver plus de sujets sur les commandes PowerShell Active Directory et les bases de PowerShell sur la page d'accueil de ShellGeek.

Articles connexes