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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 281616
Url: https://administrator.de/contentid/281616
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
4 Kommentare
Neuester Kommentar
Vorausgesetzt die NTUser.dat liegt immer ein Ordner tiefer, als der Ordner den du löschen willst:
Gruß grexit
gci '\\Fileservername\RoamingProfiles\ntuser.dat' -Force -Recurse -EA SilentlyContinue | ?{$_.LastWriteTime -lt (get-date '01.01.2015')} | %{remove-item $_.Directory.Parent.FullName -Recurse -Force}
Es scheint zu funktionieren:
Naja, ich poste hier ja keine Phantasien