Dateien und leere Ordner, die älter als eine feste Frist sind, lassen sich in PowerShell in zwei Durchgängen entfernen. Zuerst die Dateien, danach die Ordner, die dadurch leer geworden sind. Die Beispiele rechnen mit 10 Tagen. Laufwerk ist der Platzhalter für den Pfad. -WhatIf lässt Remove-Item nur anzeigen, was gelöscht würde.
Dateien
Alle Dateien unterhalb des Pfads, deren Änderungszeit mindestens 10 Tage zurückliegt. Ordner bleiben in diesem Schritt stehen.
Get-ChildItem "Laufwerk" -Recurse -Force | Where-Object {$_.LastWriteTime -le (Get-Date).AddDays(-10) -and !($_.PSIsContainer)} | Remove-Item -Force -WhatIf
Leere Ordner
Anschließend die leeren Ordner, die selbst älter als 10 Tage sind. Der Pfad wird absteigend sortiert, damit tiefer liegende Ordner vor ihren Eltern geprüft werden.
$folders = @(Get-ChildItem "Laufwerk" -Recurse -Force | Where-Object { $_.PSIsContainer } | Sort-Object -Descending FullName)
foreach ($folder in $folders) {
if (!(Get-ChildItem $folder.FullName -Force) -and ($folder.LastWriteTime -le (Get-Date).AddDays(-10))) {
Remove-Item -Force $folder.FullName -WhatIf
}
}
