Powershell Get-ChildItem -recurse nicht alle Elemente
Arbeite ich an ein powershell-Skript, das löschen bestimmter Dateien aus einem Ordner, und bewegen Sie den rest in vordefinierte Unterordner.
Meine Struktur sieht wie folgt aus
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
Möchte ich entfernen Sie alle pdb -, config-und asax-Dateien aus der gesamten Dateistruktur, bevor ich anfange Sie zu bewegen. Zu denen, die ich benutze:
$pdbfiles = Get-ChildItem "$executingScriptDirectory\*.pdb" -recurse
foreach ($file in $pdbfiles) {
Remove-Item $file
}
Und so weiter für alle Dateitypen die ich brauche entfernt. Es funktioniert Super bis auf eine pdb-Datei befindet sich im bin-Ordner der website. Und für die ASAX-Datei im website-Ordner. Aus irgendeinem Grund bekommen Sie ignoriert die von Get-ChildItem-recurse Suche.
Ist dies verursacht durch die Tiefe der Elemente innerhalb der resursive Struktur? Oder ist es etwas anderes? Wie kann ich es beheben, so dass es entfernt ALLE Dateien wie angegeben.
EDIT: ich habe versucht, hinzufügen von -Kraft -, Aber es änderte sich nichts
ANTWORT: Die folgenden gearbeitet:
$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
?Ja, ich habe - Kein Unterschied
Ich weiß, ich bin spät zur party. Das Skript oben funktioniert in der PowerShell v3 und bis. Ich lief in dieses problem, als ich herausfand, dass die Produktions-server hatte nur PowerShell v2. Sie können überprüfen, durch das einbringen der
$PSVersionTable
variable
InformationsquelleAutor Daniel Olsen | 2012-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einige Erweiterungen in der include-Teil, trennen Sie Sie mit Koma: gci -path <yourpath> -recurse -Include *.pdb, *.asax
Ich danke Ihnen sehr für Ihre Hilfe - Aktualisierte die Frage mit meiner Lösung.
Hinweis - wenn nur ein filter benötigt wird, verwenden Sie
-filter
statt-include
weil es viel schneller. Werden Sie wirklich den Unterschied bemerken mit großen directory-Strukturen.InformationsquelleAutor David Brabant
Können Sie auch das Rohr zum entfernen:
InformationsquelleAutor odrix