fraggle666
Goto Top

Powershell: Ein Verzeichnis löschen, wenn eine spezielle Datei darin älter ist, als X Tage

Hallo zusammen,

ich bin gerade dabei einen sehr großen Roaming Profile Share zu bereinigen.
60% aller dort gelisteten Profile wurden vor 2015 das letzte mal benutzt und sollen gelöscht werden.
Über den Windows Explorer selbst, komme ich leider nicht weiter. Das dort gezeigte "Modified Date" einzelner Profile stimmt leider nicht mit dem tatsächlichen Datum überein.
So zeigt mir z.B. der Explorer ein Modified Date vom 24.03.2013 an, aber wenn ich mir dann die dort enthaltene NTuser.dat ansehe, ist das Datum von heute hinterlegt, was bedeutet, dass das Profil nach wie vor genutzt wird.

Über Windirstat kann ich zwar das tatsächliche Datum auslesen, leider kann ich da aber nicht mehrere Folder zum löschen auswählen.

Deshalb möchte ich gerne über Powershell das folgende Umsetzen, was sich für mich allerdings, aufgrund von fehlendem KnowHow, zu einem enormen Projekt entwickelt hat.

Mein Profilshare "\\Fileservername\RoamingProfiles\" enthält knappe 10.000 Profile.
Nun möchte ich jedes dieser Profile löschen lassen, bei dem die dort enthaltene NTuser.dat älter als 2015 ist.

Beispiel:

"\\Fileservername\RoamingProfiles\Testuser\UPM_Profile\Ntuser.dat" ist älter als 2015, lösche bitte den Folder "\\Fileservername\RoamingProfiles\Testuser"

Hat jemand eine Idee?


Danke vorab!
Jan

Content-ID: 281616

Url: https://administrator.de/forum/powershell-ein-verzeichnis-loeschen-wenn-eine-spezielle-datei-darin-aelter-ist-als-x-tage-281616.html

Ausgedruckt am: 24.12.2024 um 01:12 Uhr

122990
122990 31.08.2015 aktualisiert um 13:35:26 Uhr
Goto Top
Vorausgesetzt die NTUser.dat liegt immer ein Ordner tiefer, als der Ordner den du löschen willst:
gci '\\Fileservername\RoamingProfiles\ntuser.dat' -Force -Recurse -EA SilentlyContinue | ?{$_.LastWriteTime -lt (get-date '01.01.2015')} | %{remove-item $_.Directory.Parent.FullName -Recurse -Force}  
Gruß grexit
fraggle666
fraggle666 31.08.2015 um 13:36:26 Uhr
Goto Top
Hi Grexit,

danke für deine schnelle Antwort.
Die Ntuser.dat liegt immer zwei Ordner tiefer -> username\UPM_Profile\NTuser.dat
Das ist aber bei allen Profilen identisch.

Das Script hat mich auf jeden Fall einen Schritt weiter gebracht. Ich werde mal noch ein bisschen basteln und wenn alles klappt eine Rückmeldung geben.
Wenn es nicht klappt oder ich wieder hänge, ebenfalls face-smile

Gruß, Jan
fraggle666
fraggle666 31.08.2015 um 14:10:18 Uhr
Goto Top
Es scheint zu funktionieren:

gci '"\\Fileservername\RoamingProfiles\*\UPM_Profile\Ntuser.dat"' -Force -Recurse -EA SilentlyContinue | ?{$_.LastWriteTime -lt (get-date '31.08.2015')} | %{remove-item $_.Directory.Parent.FullName -Recurse -Force}

In meinem Test führte das zum gewünschtem Ergebnis.
Tolle Sache! War ja einfacher als erwartet.

Ich danke dir wie verrückt!

Gruß, Jan
122990
122990 31.08.2015 aktualisiert um 14:41:49 Uhr
Goto Top
Es scheint zu funktionieren:
Naja, ich poste hier ja keine Phantasien face-wink