Powershell - Exclure des dossiers dans Get-ChildItem
Comment exclure des dossiers ? Maintenant, je coder en dur les noms de dossier, mais je veux qu'il soit plus souple.
foreach($file in Get-ChildItem $fileDirectory -Exclude folderA,folderb)
Voulez-vous dire à exclure tous dossiers? Ou tout simplement ceux que vous choisissez?
OriginalL'auteur user664481 | 2016-03-04
Vous devez vous connecter pour publier un commentaire.
"Comment exclure des dossiers ?" si vous voulez dire que tous les dossiers :
mais il ne fonctionne que pour le premier niveau de $fileDirectory .
Cela fonctionne recursevly :
ou
OriginalL'auteur dvjz
Vous pouvez le faire en utilisant le pipeline et un
Where-Object
filtre.Tout d'abord, la idiomatiques façon à effectuer une itération sur un groupe de fichiers dans PowerShell est à la pipe
Get-Childitem
àForeach-Object
. Donc la réécriture de votre commande obtient:L'avantage de l'utilisation du pipeline, c'est que maintenant vous pouvez insérer d'autres applets de commande entre les deux. Plus précisément, nous utilisons
Where-Object
pour filtrer la liste des fichiers. Le filtre passe sur un fichier seulement si elle n'est pas contenue dans un tableau donné.Si vous allez utiliser beaucoup cela, vous pouvez même écrire un personnalisé filtre fonction pour modifier la liste des fichiers de manière arbitraire, avant de passer à
foreach
.Vous aurez besoin de construire une liste des dossiers à exclure d'une manière ou d'une autre, que ce soit en le faisant manuellement ou par l'exécution d'un autre
Get-ChildItem
de commande. Il dépend de la façon dont vous choisissez les dossiers à exclure.OriginalL'auteur Ryan Bemrose
@dvjz dit que le fichier ne fonctionne que dans le premier niveau d'un dossier, mais pas de manière récursive. Mais il semble fonctionner pour moi.
OriginalL'auteur Peter