56 lines
2.2 KiB
PowerShell
56 lines
2.2 KiB
PowerShell
# 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
|
|
}
|