Copier des éléments en excluant un dossier dans PowerShell

  1. Exclusion de dossiers dans les opérations de copie PowerShell en utilisant la fonction Get-Item et le paramètre -Exclude
  2. Exclusion de dossiers dans les opérations de copie PowerShell en utilisant Where-Object et PSIsContainer
  3. Conclusion
Copier des éléments en excluant un dossier dans PowerShell

Dans le domaine de la gestion des fichiers et de l’automatisation avec PowerShell, la tâche de copier des fichiers tout en excluant des dossiers spécifiques représente un défi courant mais nuancé. Cet article explore deux méthodes efficaces pour accomplir cette tâche : utiliser la fonction Get-Item avec le paramètre -Exclude et tirer parti de Where-Object avec la propriété PSIsContainer.

Les deux méthodes, bien qu’elles servent le même objectif, abordent le problème sous des angles différents et offrent des avantages uniques.

Notre objectif est de fournir une compréhension complète de ces méthodes, de leurs applications et des nuances de leur utilisation. Grâce à des explications détaillées, à des décompositions de syntaxe et à des exemples pratiques, nous visons à équiper à la fois les utilisateurs nouveaux et expérimentés de PowerShell des compétences nécessaires pour gérer efficacement les tâches de copie de fichiers, en personnalisant leurs approches pour s’adapter aux exigences spécifiques de leurs flux de travail.

Exclusion de dossiers dans les opérations de copie PowerShell en utilisant la fonction Get-Item et le paramètre -Exclude

Nous pouvons utiliser la commande Copy-Item pour copier les fichiers tout en excluant un dossier dans PowerShell. Il existe deux méthodes pour utiliser Copy-Item tout en excluant un dossier, l’une consiste à exclure un seul dossier, et l’autre à exclure plusieurs dossiers.

La syntaxe pour cette opération combine Copy-Item avec Get-Item -Exclude :

Copy-Item -Path (Get-Item -Path "sourcePath\*" -Exclude ('folderToExclude')).FullName -Destination "destinationPath" -Recurse -Force

Paramètres :

  • Copy-Item : Ce cmdlet copie des fichiers et des répertoires vers un nouvel emplacement.
  • -Path : Spécifie le chemin des éléments à copier. Dans notre cas, cela est fourni par Get-Item.
  • Get-Item : Récupère les éléments de l’emplacement spécifié.
  • -Exclude : Ce paramètre de Get-Item filtre les éléments, en particulier les noms de dossiers ou de fichiers à exclure.
  • ('folderToExclude') : Le nom du dossier que vous souhaitez exclure.
  • .FullName : Récupère le chemin complet des éléments.
  • -Destination : Le chemin pour copier les éléments.
  • -Recurse : Inclut le contenu des sous-répertoires.
  • -Force : Force la commande à s’exécuter sans demander de confirmation à l’utilisateur.

Exemple de code :

Copy-Item -Path (Get-Item -Path "origin\*" -Exclude ('SubFolder')).FullName -Destination "destination\" -Recurse -Force

Dans notre script, nous commençons par cibler le répertoire source (C:\origin\) et employons Get-Item pour récupérer tous les éléments qu’il contient. L’utilisation du symbole astérisque (*) ici agit comme un caractère générique, représentant chaque élément dans le répertoire.

Nous utilisons ensuite le paramètre -Exclude pour exprimer notre intention d’exclure un sous-dossier spécifique, particulièrement nommé SubFolder. L’utilisation de la propriété .FullName est cruciale dans ce contexte car elle récupère le chemin complet de chaque élément avec lequel nous travaillons.

Après avoir curé cette liste, qui omet le dossier désigné, elle est remise à Copy-Item. Nous définissons notre emplacement cible comme le répertoire de destination (C:\destination). Pour assurer un processus de copie complet, englobant tous les sous-répertoires à l’exception de celui que nous avons choisi d’exclure, nous intégrons le paramètre -Recurse.

Pour faciliter davantage notre processus et éviter les interruptions potentielles, le paramètre -Force entre en jeu. Il supprime efficacement toute invite système qui pourrait autrement interrompre l’opération, particulièrement celles associées à l’écrasement de fichiers existants dans le répertoire de destination.

Dossier origin :

powershell copy-item exclure dossier - fichiers source

Sortie :

powershell copy-item exclure dossier - sortie

La commande ci-dessus n’exclura qu’un seul dossier donné. Nous pouvons également exclure plusieurs dossiers en mettant simplement les noms de plusieurs dossiers dans -Exclude().

Voir la commande pour exclure plusieurs dossiers :

Copy-Item -Path (Get-Item -Path "origin\*" -Exclude ('SubFolder', 'SubFolder2')).FullName -Destination "destination\" -Recurse -Force

Voir la sortie :

powershell copier-élément exclure dossier - sortie

Exclusion de dossiers dans les opérations de copie PowerShell en utilisant Where-Object et PSIsContainer

PowerShell fournit un ensemble étendu de cmdlets pour la manipulation de fichiers et de dossiers, avec Copy-Item étant un acteur clé pour les opérations de copie. Cependant, sa fonctionnalité native ne prend pas directement en charge l’exclusion de dossiers.

Pour y parvenir, nous employons une combinaison de Get-ChildItem, Where-Object et la propriété PSIsContainer. Cette méthode est particulièrement utile pour les opérations de copie où vous devez exclure des répertoires tout en préservant les fichiers.

La structure du script est la suivante :

Get-ChildItem -Path "sourcePath\" -Recurse | Where-Object { $_.PSIsContainer -notmatch 'True' } | Copy-Item -Destination "destinationPath" -Recurse -Container

Paramètres :

  • Get-ChildItem -Path "sourcePath\" -Recurse : Récupère tous les éléments (fichiers et dossiers) depuis le chemin spécifié, y compris les sous-répertoires.
  • Where-Object { $_.PSIsContainer -notmatch 'True' } : Filtre tous les répertoires. PSIsContainer est une propriété booléenne qui est True pour les répertoires et False pour les fichiers.
  • Copy-Item -Destination "destinationPath" -Recurse -Container : Copie les éléments restants (fichiers) vers la destination. -Recurse est utilisé pour assurer la traversée des sous-répertoires, et -Container préserve la structure des répertoires.

Exemple de code :

Get-ChildItem -Path "origin\" -Recurse | Where-Object { $_.PSIsContainer -notmatch 'True' } | Copy-Item -Destination "destination\" -Recurse -Container

Dans notre script, nous commençons par rassembler tous les éléments du répertoire source (origin\). Pour ce faire, nous employons le cmdlet Get-ChildItem.

La véritable magie opère avec le cmdlet Where-Object, où nous introduisons un filtre pour exclure spécifiquement les répertoires. Cette exclusion repose sur la condition $_ .PSIsContainer -notmatch 'True'.

Ce morceau de code est crucial car il permet de trier les éléments rassemblés, garantissant que seuls les fichiers (et non les dossiers) sont transmis à la chaîne de traitement.

Ensuite, ces fichiers filtrés sont remis au cmdlet Copy-Item. Notre commande ici est de copier ces fichiers vers notre destination spécifiée (destination\).

Un aspect important de cette opération est la manière dont elle préserve la structure de répertoire originale dans la destination malgré l’exclusion des dossiers eux-mêmes. Cet équilibre est atteint grâce à l’orchestration minutieuse des paramètres -Recurse et -Container au sein de Copy-Item, garantissant que l’intégrité de la structure de fichiers est maintenue, à l’exception des dossiers réels.

Sortie :

powershell copy-item exclure dossier - sortie

Conclusion

En conclusion, les techniques présentées dans cet article — utilisant Get-Item avec -Exclude et Where-Object avec PSIsContainer — offrent des moyens puissants et flexibles d’exclure des dossiers durant les opérations de copie PowerShell. En comprenant et en appliquant ces méthodes, les utilisateurs peuvent considérablement améliorer leurs capacités de gestion des fichiers et d’automatisation dans PowerShell.

L’approche Get-Item et -Exclude est simple et très efficace pour exclure des dossiers spécifiques, tandis que les méthodes Where-Object et PSIsContainer offrent un contrôle plus nuancé, particulièrement utile dans des scénarios où les critères d’exclusion sont plus complexes ou dynamiques. Les deux méthodes démontrent la polyvalence et la puissance de PowerShell dans le traitement des fichiers et des dossiers, en faisant un outil inestimable pour les administrateurs système, les développeurs et les professionnels de l’informatique.

Armés de ces connaissances, les utilisateurs peuvent s’attaquer en toute confiance à une large gamme de tâches de copie de fichiers, assurant un contrôle efficace et précis sur leurs opérations de gestion de fichiers dans des environnements Windows.

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: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Article connexe - PowerShell Copy