mar.ius
Goto Top

PowerShell Dateien und übergeordnete Ordner löschen, wenn älter als X Tage

Hallo zusammen,

ich versuche mir gerade ein PS-Script zu bauen, mit dem ich alte FSLogix-Profile ermitteln und löschen kann.

Unten genanntes Script funktioniert zwar, aber ich möchte außer der Datei auch den jeweils übergeordneten Ordner löschen, welcher mit Ausnahme der Dateiendung genauso heißt, wie die darin liegende VHDX-Datei. Die Ordner haben ein anderes Änderungsdatum als die Dateien. Mir ist das Änderungsdatum der Datei als Grundlage wichtig, damit wirklich nur alte Profile gelöscht werden.

$Alter = -730
$Path = “\\test.local\test\Profile\FSLogixProf”
Get-Childitem $Path -recurse | where {$_.lastwritetime -lt (get-date).adddays($Alter) -and -not $_.psiscontainer} |% {remove-item $_.fullname -force -whatif}

Danke Euch im Voraus für Eure Tipps!

Beste Grüße

Content-ID: 670474

Url: https://administrator.de/forum/powershell-dateien-und-uebergeordnete-ordner-loeschen-wenn-aelter-als-x-tage-670474.html

Ausgedruckt am: 05.01.2025 um 16:01 Uhr

gastric
Lösung gastric 03.01.2025 aktualisiert um 23:53:11 Uhr
Goto Top
Hi
$alter = -730
$date = (Get-Date).AddDays($alter)
$path = "\\test.local\test\Profile\FSLogixProf"  
Get-Childitem -LiteralPath $path -Recurse -File -Filter *.vhdx -EA Silentlycontinue | ?{$_.LastWriteTime -lt $date} | group-item {$_.Directory.FullName} | %{remove-item -LiteralPath $_.Name -Force -Recurse -whatif}
Scharf schalten durch "-whatif" entfernen.

Gruß gastric
mar.ius
mar.ius 03.01.2025 aktualisiert um 22:55:35 Uhr
Goto Top
Vielen Dank!

Zeigt mir zwar die Fehlermeldung an, funktioniert aber trotzdem:

Get-Childitem : Ein Teil des Pfades "\\test.local\FSL\Profile\test\S-1-5-21-12345678-12345678-12345678-12345_test123" konnte nicht gefunden werden.  
In Zeile:8 Zeichen:1
+ Get-Childitem -LiteralPath $path -Recurse -File -Filter *.vhdx | ?{$_ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ReadError: (\\test.local\FSL\Profile...5_test123:String) [Get-ChildItem], DirectoryNotFoundException
    + FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
gastric
gastric 03.01.2025 aktualisiert um 23:58:56 Uhr
Goto Top
Das tritt auf wenn man entweder zu wenig Zugriffsrechte auf bestimmte Ordner hat oder verschachtelte Pfade länger als 255 Zeichen sind, oder Dateien/Ordner ungültige Zeichen enthalten, oder es mehrere alte vhdx im selben Verzeichnis gibt. Habe oben noch Korrekturen dazu hinzugefügt.