Initial
This commit is contained in:
parent
faf2be8238
commit
ea469ba167
12
README.md
12
README.md
@ -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
55
WIN-CleanOldFiles.ps1
Normal 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
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user