PowerShell-Skript zum löschen von Dateien und Ordner, die von bestimmten Kriterien

Ich versuche ein Skript schreiben, dass die Suche für:

  1. Ordner mit bestimmten Namen.
  2. Dateien mit bestimmten Erweiterungen, während
  3. Ohne bestimmten Verzeichnisse aus der Suche.

Sobald die Suche ausgeführt wird, möchte ich alle die 1s-und 2s gelöscht werden, sowie die übergeordneten Ordner, wenn Sie nicht übereinstimmen 3. Hier ist, was ich habe, so weit:

#Define list of computers to search for the files and folders in question
$ComputerList = Get-Content -Path "C:\computers.txt"

#Define a function for searching files and folders based on criteria:
function search {
    PROCESS {
        $srcFolder ="C:\test"
        Get-ChildItem $srcFolder -ErrorAction SilentlyContinue  -recurse -Force | Where-Object {`
            $_.Name -eq “keyword1” -or`
            $_.Name -eq keyword2 -or`

              -and $_.fullname -notmatch 'C:\\Windows'`
              -and $_.fullname -notmatch 'C:\\Program Files'
        } | foreach-object -process { _.FullName }
    }
}

foreach ($strComputer in $ComputerList)
{
    #Perform the search function on all the computers listed
    foreach ($objItem in $colItems)
    {
        write-host         "-------------------------$strComputer ----------------" -foregroundcolor "red"
        write-host         "                      Files Found                                                    " -foregroundcolor "yellow" -backgroundcolor "black"
             $ComputerList | search

        "Number of files and folders found: " +($ComputerList | search | Measure-Object | Select-Object -ExpandProperty Count)
        write-host "------------------------------------------------------------------" -foregroundcolor "red"
    }

    if (($ComputerList | search).count -lt 1) {
        write-host "No files found to delete"
    }
    else {
        #Prompt if you want to delete the files
        write-host         "Do you want to delete these files?" -foregroundcolor "yellow" -backgroundcolor "black"
        $ComputerList | search | Remove-Item -Force -confirm
    }
}
Out-File -FilePath C:\results.txt

Also hier sind die Fragen, die ich habe:

  1. Ich kann das Skript zu arbeiten. Allerdings bin ich mir nicht sicher, wie man das löschen der übergeordneten Ordner und schützt die diejenigen ausgeschlossen.

  2. Die Ausgabe in die Datei funktioniert nicht. Die Datei wird erstellt, aber es ist leer. Warum?

Nach einem Blick auf Get-ChildItem | Get-Member erkannte ich, dass Sie die Parent-Eigenschaft angegeben ist, die durch das System.IO.DirectoryInfo Eltern, also, wenn ich kann hinzufügen, dass die Liste der Elemente, die gelöscht werden, dann sollte es funktionieren.

Die Ordnerstruktur ist weiter unten. Zu wiederholen, in einem vielleicht klarer, ich möchte einen Ordner löschen:

  1. Deren name oder Inhalt entspricht keyword(s)
  2. Wenn der Inhalt entspricht keyword(s), aber einen Namen für den Ordner nicht > überprüfen, um zu sehen, ob es ist explizit ausgeschlossen, z.B. C:\Windows, C:\Program Dateien etc. > Wenn es ist, lassen Sie allein. Wenn es nicht ist, löschen Sie den Ordner.**

Hier sind die einfachen URLs:

oi42.tinypic.com/2nulmz4.jpg
oi43.tinypic.com/fwlxd0.jpg
oi42.tinypic.com/315hdw9.jpg
InformationsquelleAutor coding1 | 2011-12-02
Schreibe einen Kommentar