hziemer
Goto Top

Löschen von alten Files, gemäß einer Vorgabe

Einen guten Tag an alle hier im Forum,

ich versuche in einem Verzeichnis die ältesten Files automatisch zu löschen.
Zum Beispiel alles was älter als 7 Tage ist.
Mein Code hierzu:
$path = "pfad"
$limit = (Get-Date).AddDays(-7)
$versions = Get-ChildItem $path | Where-Object { $_.PSIsContainer } | Sort-Object CreationTime -Descending | Select-Object -First 7
$versions | Where-Object { $_.LastWriteTime -lt $limit } | Remove-Item -Recurse -Force

Das ganze läuft durch, ohne eine Meldung, aber es passiert nichts. Die Files die älter als 7 tage sind werden nicht gelöscht.
Wo ist mein Fehler?
Ich bin ein absoluter Anfänger im Thema Powershell und habe mir das im Internet zusammengesucht.

Danke für eure Hilfe
hziemer

Content-Key: 32269892593

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

Printed on: May 5, 2024 at 18:05 o'clock

Mitglied: 6376382705
6376382705 Aug 29, 2023 at 09:38:22 (UTC)
Goto Top
Hi.

gibts hier im Forum ca. drölftausend Mal.

administrator.de/latest/?search=dateien+l%C3%B6schen+%C3%A4lter+als

Gruß
Member: kpunkt
kpunkt Aug 29, 2023 at 09:43:53 (UTC)
Goto Top
Geh schrittweise ran.
Lass dir erst mal $versions anzeigen.

ChatGPT ist da auch zum lernen ziemlich hilfreich.
$targetDirectory = "C:\Pfad\Zum\Verzeichnis"  
$daysThreshold = 7
$currentDate = Get-Date

$filesToDelete = Get-ChildItem -Path $targetDirectory | Where-Object { $_.LastWriteTime -lt ($currentDate.AddDays(-$daysThreshold)) }

foreach ($file in $filesToDelete) {
    Remove-Item -Path $file.FullName -Force
Ist jetzt ungetestet, sieht aber auf den ersten Blick ziemlich brauchbar aus, auch wenns besser geht.
Member: erikro
erikro Aug 29, 2023 at 10:26:34 (UTC)
Goto Top
Moin,

erstmal: Bitte Code-Tags benutzen. Das liest sich deutlich besser.

$versions = Get-ChildItem $path | Where-Object { $_.PSIsContainer } | Sort-Object CreationTime -Descending | Select-Object -First 7

In Deiner Variablen $versions stehen nur die sieben neuesten Dateien drin, da Du erst nach dem Erstelldatum (sic!) absteigend sortierst und dann Dir nur die ersten sieben Ergebnisse anzeigen lässt. Deshalb löscht er auch nicht. Lass einfach das letzte select-object weg.

hth

Erik
Member: erikro
erikro Aug 29, 2023 at 10:32:53 (UTC)
Goto Top
Zitat von @6376382705:
gibts hier im Forum ca. drölftausend Mal.

Echt? Die Frage, wo sein Fehler liegt, ist schon so oft beantwortet worden? face-wink
Mitglied: 6376382705
6376382705 Aug 29, 2023 at 10:43:24 (UTC)
Goto Top
Zitat von @erikro:

Zitat von @6376382705:
gibts hier im Forum ca. drölftausend Mal.

Echt? Die Frage, wo sein Fehler liegt, ist schon so oft beantwortet worden? face-wink

Ich bin ein absoluter Anfänger im Thema Powershell und habe mir das im Internet zusammengesucht.
Der TO versteht eh nicht, was Er da zusammen kopiert hat, wieso also nicht eine als "funktionierende Lösung" hier ausm Board nehmen/kopieren? Als ob Er sich damit beschäftigen würde ..
Gruß
Member: ipzipzap
Solution ipzipzap Aug 29, 2023 at 16:02:47 (UTC)
Goto Top
Hi,

Ich nehm für sowas immer DELAGE, wenn es jetzt nicht direkt in PS sein muß:

https://www.horstmuc.de/wbat32d.htm

cu,
ipzipzap