Zum Inhalt springen

Powershell Script Ordner löschen nach Datum


spyware96

Empfohlene Beiträge

Hallo,

Ich habe folgendes Problem:

Eine mit Hyper-V Virtualisierte Maschine wird per Export in einen Ordner gesichert, der Ordner in dem sich der Export befindet wird jeden tag mit dem Datum im namen angelegt. Format: yy-MM-dd

Nun soll das powershell-script welches den Export ausführt gleichzeitig die Sicherungen der letzten 7 tage löschen. 

Folgendes Script funktioniert zwar, löscht aber daten aus den Sicherungen da diese ein älteres Datum haben weil die ja teilweise nur Kopiert werden.

$DatumVor7Tagen=(Get-Date).AddDays(-7)
$Source="c:\Backup\"
start-transcript "$Source $(get-date -format yy-MM-dd).txt"
get-childitem "$Source" -recurse | where {$_.lastwritetime -lt $DatumVor7Tagen} | remove-item -recurse -whatif

Gibt es eine Möglichkeit nach dem Änderungsdatum des Ordners und nicht der Dateien  zu Filtern?

 

Oder doch komplett anders Aufbauen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem bei deinem Skript ist, dass du über die gesamte Ordnerstruktur iterierst und dort einfach alle Dateien weg haust, die älter als 7 Tage sind. 

Das Code-Snippet von Tiro wird dir so auch nur bedingt helfen. Das löscht dann zwar nicht mehr direkt die Dateien in deinen jüngeren Sicherungen, aber immer noch die älteren Ordner in deiner Sicherung und damit letztendlich wieder die Dateien wenn du rekursiv alles weg haust.

Was du brauchst ist ein bisschen mehr Logik in deinem Code. Du solltest im ersten Schritt erstmal durch deinen Hauptordner iterieren, wo alle Sicherungen abgelegt sind. Dort separierst du dann in einer Liste die Ordner der Sicherungen (psiscontainer)  die älter als 7 Tage sind. Wenn du die hast, kannst du einfach die Ordner samt Childitems rekursirv löschen. Die Dateien in den Ordnern interessieren dich gar nicht deshalb musst du dir von denen das Datum auch nicht anschauen.

Eleganter wäre allerdings, wenn dein Skript/Dienst, welches den Export erstellt, dein Export in einen .zip Container packt. Dann braucht das Skript nur noch den  .zip Container löschen und gar nicht über das Filesystem rekursiv iterieren um die Dateien in den Sicherungsordnern zu löschen. Spart zeitgleich auch Plattenplatz.

Wenn man dann noch den letzten % rauskitzeln wil (ist aber Geschmackssache), dann könnte man statt sich auf das Änderungsdatum zu beziehen (ist und unschön und System abhängig) sich eher zur Nutze machen, dass deine Dateien nach dem  yy-MM-dd Schema benannt sind. Den Teil könnte man sich mit einem regulären Ausdruck aus dem Namen Filtern und dass dann mit dem aktuellen Datum vergleichen. Dann wäre das Verfahren ganz sauber.

 

 

Bearbeitet von Uhu
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...