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
    }
}
Haben Sie versucht, mit 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

Schreibe einen Kommentar