Powershell Get-ChildItem -recurse ne pas obtenir tous les éléments
Je suis en train de travailler sur un script powershell effacer certains fichiers à partir d'un dossier, et bouger le reste dans prédéfinis sous-dossiers.
Ma structure ressemble à ceci
Main
(Contains a bunch of pdb and dll files)
-- _publish
--Website
(Contains a web.config, two other .config files and a global.asax file)
-- bin
(Contains a pdb and dll file)
-- JS
-- Pages
-- Resources
Je veux enlever tous les pdb, de configuration et d'asax des fichiers à partir de l'ensemble de la structure du fichier avant de commencer à les déplacer. Pour que j'utilise:
$pdbfiles = Get-ChildItem "$executingScriptDirectory\*.pdb" -recurse
foreach ($file in $pdbfiles) {
Remove-Item $file
}
Et ainsi de suite pour tous les types de fichiers j'ai besoin d'enlevé. Il fonctionne très bien sauf pour un fichier pdb trouve dans le dossier bin du site. Et pour les ASAX fichier dans le dossier de site web. Pour une raison quelconque, ils sont ignorés par le Get-ChildItem récursif de recherche.
Est-ce causé par la profondeur des éléments à l'intérieur de la resursive structure? Ou est-ce autre chose? Comment puis-je résoudre ce problème, de sorte qu'il supprime TOUS les fichiers spécifiés.
EDIT: j'ai essayé d'ajouter de la force, Mais il n'a rien changé
RÉPONSE: La suite travaillé:
$include = @("*.asax","*.pdb","*.config")
$removefiles = Get-ChildItem "$executingScriptDirectory\*" -recurse -force -include $include
foreach ($file in $removefiles) {
if ($file.Name -ne "Web.config") {
Remove-Item $file
}
}
Get-ChildItem -force
?Oui je l'ai fait - Pas de différence
Je sais je suis en retard à la fête. Le script ci-dessus fonctionne PowerShell v3 et. J'ai rencontré ce problème quand j'ai découvert que le serveur de production seulement eu PowerShell v2. Vous pouvez vérifier par le dumping de la
$PSVersionTable
variable
OriginalL'auteur Daniel Olsen | 2012-05-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez spécifier plusieurs extensions dans la partie, en les séparant par un coma: gci-chemin <yourpath> -recurse -Comprendre *.pdb, *.asax
Merci beaucoup pour toute votre aide, - mise à Jour de la question avec ma solution.
remarque - si un seul filtre est nécessaire d'utiliser
-filter
au lieu de-include
en raison de son beaucoup plus rapide. Vous allez vraiment voir la différence avec les grandes structures de répertoire.OriginalL'auteur David Brabant
Vous pouvez également utiliser le tuyau pour enlever:
OriginalL'auteur odrix