Select Outdated Filenames
Zuletzt geändert: 14.03.2026 05:56

Select-OutdatedFilenames #

ÜBERSICHT #

Ermittelt veraltete Datensicherungsdateien anhand des Datums im Dateinamen.

SYNTAX #

Select-OutdatedFilenames [-Filenames] <object> [-Basename] <string> [-Extension] <string>
    [[-History] <int>] [<CommonParameters>]

BESCHREIBUNG #

Diese Funktion dient der automatisierten Verwaltung von Backup-Dateien auf NAS, FTP oder SFTP-Zielen. Sie filtert eine Liste von Dateinamen nach einem erwarteten Muster ($Basename-YYYY-MM-DD-HH-mm-ss-ffff.$Extension) und identifiziert jene Dateien, die gemäß der gewünschten -History-Tiefe als veraltet gelten.

Sie wird u. a. von Backup-MssqlDatabase verwendet, um alte ZIP-Dateien von Sicherungen automatisch zu löschen – sowohl lokal als auch auf Remote-Systemen.

Anwendungslogik: #

  • Akzeptiert eine Liste von Dateinamen (ohne Pfad).
  • Erkennt Dateien, die exakt dem Muster <Basename>-<Zeitstempel>.<Extension> entsprechen.
  • Sortiert die Dateien nach Zeitstempel (abgeleitet aus dem Namen).
  • Gibt die ältesten Dateien zurück, die über die definierte -History hinausgehen.

PARAMETER #

-Filenames #

Type: object

Eine Liste von Dateinamen (z. B. aus Get-ChildItem -Name oder einem FTP-Verzeichnis).

-Basename #

Type: string

Der gemeinsame Basisname der Sicherungsdateien (z. B. MyDatabase). Dieser muss exakt mit dem Prefix im Dateinamen übereinstimmen.

-Extension #

Type: string

Die Dateiendung (z. B. .zip). Kann mit oder ohne Punkt übergeben werden.

-History #

Type: int
Default: 3

Anzahl der aufzubewahrenden Dateien. Alle älteren werden als “veraltet” zurückgegeben. Standard: 3

AUSGABEN #

[string[]] – Liste der veralteten Dateinamen, die gelöscht werden können.

BEISPIELE #

# Gibt die beiden ältesten Dateien zurück, also von 01.01. und 02.01.
Select-OutdatedFilenames -Filenames @("MyDb-2024-01-01-10-00-00-1234.zip", "MyDb-2024-01-02-10-00-00-1234.zip", "MyDb-2024-01-03-10-00-00-1234.zip", "MyDb-2024-01-04-10-00-00-1234.zip") -basename 'MyDb' -extension '.zip' -history 2
Get-ChildItem -Path \\nas\sql -Name | Select-OutdatedFilenames -basename 'DB1' -extension 'zip' -history 5 | ForEach-Object { Remove-Item "\\nas\sql\$_" }

HINWEISE #

  • Der Zeitstempel wird ausschließlich aus dem Dateinamen extrahiert.
  • Dateien, die nicht exakt dem erwarteten Namensschema entsprechen, werden ignoriert.
  • Unterstützt keine Mehrfachformate oder alternativen Zeitstempel.