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 *.txtCommande 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:\ -RecurseL'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 SilentlyContinueRechercher 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 -RecurseCommande 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 SilentlyContinueDans 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 -RecurseCi-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.txtDans 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.txtPowerShell 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 FullnameDans 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 FullnamePowerShell 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 -DescendingDans 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.