# Script Name: WIN-CleanOldFiles.ps1 # Beschreibung: Löscht Dateien und Verzeichnisse, die älter als ein definierter Zeitraum sind # Aufruf: - # Autor: Patrick Asmus # Web: https://www.media-techport.de # Git-Reposit.: https://git.media-techport.de/scriptos/win-cleanoldfiles.git # Version: 1.0 # Datum: 08.11.2023 # Modifikation: Initial ##################################################### # Variablen $Verzeichnis = "D:\temp" $ZeitrahmenInTagen = 730 $LogPfad = "C:\logs\CleanOldFiles.log" # Berechnung Startdatum des Zeitrahmens $Startdatum = (Get-Date).AddDays(-$ZeitrahmenInTagen) $GelöschtdurchScriptAm = Get-Date # Funktion zur Formatierung des Datums im deutschen Stil function Format-DeutschesDatum ([datetime] $date) { return $date.ToString("dd.MM.yyyy") } # Lösche Dateien und Verzeichnisse, die älter als der angegebene Zeitraum sind $GelöschteDateien = @() $GelöschteVerzeichnisse = @() Get-ChildItem -Path $Verzeichnis -Recurse | ForEach-Object { if ($_.LastWriteTime -lt $Startdatum) { if ($_.PSIsContainer) { $_ | Remove-Item -Force -Recurse $GelöschteVerzeichnisse += $_.FullName $LogMeldung = "Ordner gelöscht am: $(Format-DeutschesDatum $GelöschtdurchScriptAm) | $($_.FullName)" Write-Output $LogMeldung $LogMeldung | Out-File -Append -FilePath $LogPfad } else { $_ | Remove-Item -Force $GelöschteDateien += $_.FullName $LogMeldung = "Datei gelöscht am: $(Format-DeutschesDatum $GelöschtdurchScriptAm) | Letzte Änderung: $(Format-DeutschesDatum $_.LastWriteTime) | $($_.FullName)" Write-Output $LogMeldung $LogMeldung | Out-File -Append -FilePath $LogPfad } } } # Überprüfe, ob das Verzeichnis leer ist, und entferne es gegebenenfalls if ((Get-ChildItem -Path $Verzeichnis | Measure-Object).Count -eq 0) { Remove-Item -Path $Verzeichnis -Force -Recurse $GelöschteVerzeichnisse += $Verzeichnis $LogMeldung = "Ordner gelöscht am: $(Format-DeutschesDatum $GelöschtdurchScriptAm) | $Verzeichnis" Write-Output $LogMeldung $LogMeldung | Out-File -Append -FilePath $LogPfad }