Jump to content
Melde dich an, um diesem Inhalt zu folgen  

Powershell Script Ordner löschen nach Datum

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?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Gast Uhu

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

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

Melde dich an, um diesem Inhalt zu folgen  

Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

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

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung