Backup-Rotation mit PowerShell: Unterschied zwischen den Versionen

Aus HB9FDZ
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „== PowerShell: Nur die 5 neuesten Sicherungsdateien behalten == Dieses Skript löscht automatisch alle älteren ZIP-Dateien im Ordner <code>C:\datensicherungtask</code>, sodass nur die 5 neuesten Sicherungen erhalten bleiben. === Skriptinhalt === <syntaxhighlight lang="powershell"> $Pfad = "C:\datensicherungtask" $Dateien = Get-ChildItem -Path $Pfad -Filter "dasi*.zip" | Sort-Object LastWriteTime -Descending $ZuLöschen = $Dateien | Select-Object -Skip…“
 
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
Dieses Skript löscht automatisch alle älteren ZIP-Dateien im Ordner <code>C:\datensicherungtask</code>, sodass nur die 5 neuesten Sicherungen erhalten bleiben.
Dieses Skript löscht automatisch alle älteren ZIP-Dateien im Ordner <code>C:\datensicherungtask</code>, sodass nur die 5 neuesten Sicherungen erhalten bleiben.


=== Skriptinhalt ===
<syntaxhighlight lang="powershell">
<syntaxhighlight lang="powershell">
$Pfad = "C:\datensicherungtask"
$Pfad = "C:\datensicherungtask"
Zeile 10: Zeile 9:


foreach ($Datei in $ZuLöschen) {
foreach ($Datei in $ZuLöschen) {
     Remove-Item $Datei.FullName -Force
     Remove-Item $Datei.FullName -Force -ErrorAction SilentlyContinue
}
}
</syntaxhighlight>
</syntaxhighlight>
Zeile 30: Zeile 29:


----
----
=== Erweiterung: Logging ===
<syntaxhighlight lang="powershell">
$LogPfad = "C:\datensicherungtask\cleanup.log"
Add-Content -Path $LogPfad -Value "Cleanup am $(Get-Date):"
foreach ($Datei in $ZuLöschen) {
    Remove-Item $Datei.FullName -Force
    Add-Content -Path $LogPfad -Value "Gelöscht: $($Datei.Name)"
}
</syntaxhighlight>
=== Beispielausgabe der Logdatei ===
<pre>
Cleanup am 13.08.2025:
Gelöscht: dasi20250730.zip
Gelöscht: dasi20250731.zip
</pre>
''Letzte Änderung: {{CURRENTDAY}}.{{CURRENTMONTH}}.{{CURRENTYEAR}}''
''Letzte Änderung: {{CURRENTDAY}}.{{CURRENTMONTH}}.{{CURRENTYEAR}}''


[[Kategorie:Powershell]]
[[Kategorie:Powershell Scripte]]

Aktuelle Version vom 13. August 2025, 12:54 Uhr

PowerShell: Nur die 5 neuesten Sicherungsdateien behalten

[Bearbeiten | Quelltext bearbeiten]

Dieses Skript löscht automatisch alle älteren ZIP-Dateien im Ordner C:\datensicherungtask, sodass nur die 5 neuesten Sicherungen erhalten bleiben.

$Pfad = "C:\datensicherungtask"
$Dateien = Get-ChildItem -Path $Pfad -Filter "dasi*.zip" | Sort-Object LastWriteTime -Descending
$ZuLöschen = $Dateien | Select-Object -Skip 5

foreach ($Datei in $ZuLöschen) {
    Remove-Item $Datei.FullName -Force -ErrorAction SilentlyContinue
}

Verwendung in der Aufgabenplanung

[Bearbeiten | Quelltext bearbeiten]
  1. Öffne die Windows-Aufgabenplanung.
  2. Erstelle eine neue Aufgabe mit einem täglichen Trigger (z. B. 23:59 Uhr).
  3. Als Aktion:
    1. Programm/Skript: powershell
    2. Argumente: -ExecutionPolicy Bypass -File \"C:\Pfad\zu\deinem\Skript.ps1\"
  4. Speichern und aktivieren.

Hinweis: Stelle sicher, dass das Skript unter einem Benutzerkonto mit ausreichenden Rechten läuft und dass PowerShell-Skripte erlaubt sind.

Erweiterungsmöglichkeiten

[Bearbeiten | Quelltext bearbeiten]
  • Logdatei mit Datum und gelöschten Dateien
  • E-Mail-Benachrichtigung bei Löschvorgängen
  • Prüfung auf Mindestanzahl vor dem Löschen

Erweiterung: Logging

[Bearbeiten | Quelltext bearbeiten]
$LogPfad = "C:\datensicherungtask\cleanup.log"
Add-Content -Path $LogPfad -Value "Cleanup am $(Get-Date):"

foreach ($Datei in $ZuLöschen) {
    Remove-Item $Datei.FullName -Force
    Add-Content -Path $LogPfad -Value "Gelöscht: $($Datei.Name)"
}

Beispielausgabe der Logdatei

[Bearbeiten | Quelltext bearbeiten]
Cleanup am 13.08.2025:
Gelöscht: dasi20250730.zip
Gelöscht: dasi20250731.zip


Letzte Änderung: 12.01.2026