Get-ChildItem avec Join-chemin travaillait surtout pour moi, mais je l'ai réalisé copiait les répertoires racine dans les autres répertoires racine, ce qui était mauvais.
Par exemple
Objectif: Copier tous les childitem intérieur c: \ unDossier \ CopyInHere à la racine d: \ PutItInHere, mais non compris c: \ unDossier \ CopyInHere lui-même.
- E.g. Les enfants de CopyInHere et les enfants de PutItInHere
Les exemples ci-dessus le font la plupart du temps, mais ce qui se passe est qu'il crée un dossier appelé sous-dossier, et crée un dossier dans le dossier appelé sous-dossier. Cela est dû au fait que Join-Path calcule un chemin de destination de d: \ PutItInHere \ SubFolder pour l'élément enfant SubFolder, de sorte que SubFolder get est créé dans un dossier appelé SubFolder. J'ai contourné cela en utilisant Get-ChildItems pour ramener une collection d'éléments, puis en utilisant une boucle pour la parcourir. Cela fait en somme, le nom complet de l'élément actuel pour le calcul de la destination. Cependant, il vérifie ensuite s'il s'agit d'un objet DirectoryInfo. Si elle vérifie si c'est Parent Directory est le répertoire source, cela signifie que le dossier en cours d'itération est un enfant direct du répertoire source, en tant que tel nous ne devrions pas ajouter son nom au répertoire de destination, car nous voulons que ce dossier soit créé dans le répertoire de destination, pas dans un dossier de celui-ci dans le répertoire de destination.
Ensuite, tous les autres dossiers fonctionneront correctement.
C'était la solution que je vais poster. :) J'ai trouvé que -Inclure et -Exclude ne fonctionne pas correctement pour Select-String, Copy-Item, et d'autres commandes. Cela fonctionne correctement pour Get-ChildItem (dir). – JasonMArcher
IIRC, si vous regardez le fichier d'aide pour ces cmdlets, ils indiquent que ces paramètres ne fonctionnent pas comme prévu. Pour expédier est de choisir. –
Merci Aaron - qui a fonctionné parfaitement! – Guy