This commit is contained in:
scriptos 2023-11-08 13:35:13 +01:00
parent faf2be8238
commit ea469ba167
2 changed files with 66 additions and 1 deletions

View File

@ -1,2 +1,12 @@
# win-cleanoldfiles
# Automatisches löschen von Dateien und Ordnern
Dieses PowerShell-Skript dient dazu, Dateien und Verzeichnisse in einem angegebenen Verzeichnis zu löschen, die älter als ein bestimmter Zeitraum sind. Es ermöglicht eine effiziente Bereinigung von nicht mehr benötigten Daten.
Das Skript ist nützlich für die Wartung von Speicherplatz und die Aufrechterhaltung einer sauberen Verzeichnisstruktur.
## Anzupassende Variablen:
**$Verzeichnis** = "D:\Pfad\zum\Verzeichnis"
**$ZeitrahmenInTagen** = 365
**$LogPfad** = "C:\logs\CleanOldFiles.log"

55
WIN-CleanOldFiles.ps1 Normal file
View File

@ -0,0 +1,55 @@
# 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
}