Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

Löschen von bestimmten Dateien ( z.B. Endung .mp3 .wma .tmp .log), die älter als n Tage sind.

Mitglied: greenhorn101

Skript für Powershell v1.0

Hallo zusammen,
ich bin neu eingestiegen bei PowerShell und gerade dabei mein Wissen aufzubauen.

Folgendes Problem habe ich: Ich will gewisse Daten mit verschiedenen Endungen bzw. verschiedenen Teilstrings des Namens der Dateien löschen
Endungen: *.temp , *.log , *.txt .mp3. wma etc. Teilstring: blabla* , blablabla* lied1* lied2* etc.

Wie man nach n Tagen löscht habe ich wie folgt gemacht:
Dabei habe ich die Tage auf 10 gesetzt, dass funktionier auch, aber es löscht ja alle Dateien, auch die, die ich behalten will, die älter als zehn Tage sind.

Get-Childitem -recurse E:\test\$j | Where-Object {($Today-$_.LastWriteTime).Days -gt 10} | Remove-Item

Das ganze habe ich als Foreach-Schleife geschrieben, die zwei Arrays besitzt, zum einen die versch. Ordner in denen nach den Daten gesucht werden soll, zum anderen
die versch. Teilstrings und Endungen der Daten.
Mein Problem ist, dass wenn ich beide arrays zu einem Verbinde trotzdem alle alten Dateien gelöscht werden, obwohl ich vorgebe, dass ich nur bestimmte gelöscht haben will, die älter als zehn Tage sind.

Kann mir bitte jemand weiterhelfen

Grüße greenhorn101

Content-Key: 159394

Url: https://administrator.de/contentid/159394

Ausgedruckt am: 17.09.2021 um 21:09 Uhr

Mitglied: greenhorn101
greenhorn101 28.01.2011 um 11:56:18 Uhr
Goto Top
Hallo zusammen,

nach langem hin und her habe ich endlich den Sprung geschafft, das Skript so zum laufen zu bringen wie ich das wollte.

Alt:

Get-Childitem -recurse E:\test\$j | Where-Object {($Today-$_.LastWriteTime).Days -gt 10} | Remove-Item

$j stellt das zusammen gesetzte Array dar das aus folgenden Bestand.
$h stellt dabei die jeweiligen Pfade der Ordner da und $i die zu löschenden Dateien
Im alten Befehl habe ich versucht den Pfad und die zu löschenden Dateien in einem Array zusammen zu fassen, was aber nicht den gewünschten Erfolg erzielte.

Neu:

Get-Childitem -recurse E:\test\$h -include $i | Where-Object {($Today-$_.LastWriteTime).Days -gt 10} | Remove-Item

Man muss also darauf achten, dass man das -include nicht ans Ende setzt, nach Remove-item, sondern direkt nach dem Pfad der zu löschenden Dateien, dann werden auch wirklich nur die Dateien gelöscht, die älter als 10 Tage sind und eben die entsprechenden Eigenschaften tragen.
Alle anderen Dateien die älter als 10 Tage sind, und nicht mit einer Eigenschaft von $i übereinstimmen werden nicht gelöscht.

Nun läuft das Skript ohne Probleme!!!
Ich hoffe ich kann dem einen oder anderen damit auch helfen:) face-smile

grüße
greenhorn101
Heiß diskutierte Beiträge
question
Netzwerkperformance - Mikrotik - Wo ist mein Fehler? gelöst BirdyBVor 1 TagFrageNetzwerke39 Kommentare

Moin zusammen, ich stehe gerade etwas auf dem Schlauch und weiß nicht so recht was mein Fehler ist. Gegeben ist mein heimisches Netzwerk: Also eigentlich ...

info
Hunderttausende MikroTik-Router sind seit 2018 angreifbarkilltecVor 1 TagInformationMikroTik RouterOS24 Kommentare

Mehrere MikroTik Router angreifbar. Hier der Link zu Heise: Hunderttausende MikroTik-Router sind seit 2018 angreifbar Gruß ...

question
Neue Firmennetzwerkstruktur und ein glühender KopfDerWachnerVor 1 TagFrageNetzwerke28 Kommentare

Moin zusammen, nun hab ich jahrelang hier nur mitgelesen, nun stehe ich allerdings selbst vor nem Problem was mir seit Tagen Kopfschmerzen bereitet. Also wir ...

general
Neue Herausforderungen auf unserer englischen SeiteFrankVor 1 TagAllgemeinOff Topic14 Kommentare

Auf unserer englischen Seite gibt es neue Herausforderungen: Find who restarted DB server und Wanted: Network Node Manager 6.4 wer kann helfen? Generell findet ihr ...

question
Windows Server 2012 R2 frisst SSDs (cbs.log)drahtbrueckeVor 1 TagFrageWindows Server14 Kommentare

Hallo, ich habe vor etwa 2 Monaten eine nur etwa 3 Monate alte SSD gegen eine neue getauscht (Samsung OEM Datacenter SSD SM883) in einem ...

question
RDS CALs und normale CALs - Wie richtig lizensierentim.riepVor 1 TagFrageWindows Server19 Kommentare

Hallo liebe User, ich habe eine Frage zur richtigen Lizensierung: Wenn eine natürliche Person zum Beispiel drei Accounts auf einem Windows Server 2016 hat, braucht ...

question
2 Netzwerkkarten für 2 verschieden Netze auf einem Windows-ServerglasscolaVor 17 StundenFrageWindows Server6 Kommentare

Hallo zusammen, im Rahmen meiner Bachelorthesis baue ich ein Labor auf, das folgend aussieht. Ich habe einen Server und auf ihm laufen 2 VMs (1 ...

info
Phishingwelle Volksbanklcer00Vor 1 TagInformationSicherheit10 Kommentare

Hallo zusammen, bei uns häufen sich gerade Phishing-Emails mit Ziel Volks-Raiffeisen-Bank. Geködert wird zum Teil auch mit der Erwähnung der SecureGo Smartphone-App. Grüße lcer ...