win-cleanoldfiles/WIN-CleanOldFiles.ps1

56 lines
2.2 KiB
PowerShell
Raw Permalink Normal View History

2023-11-08 12:35:13 +00:00
# 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
}