Löschen von Dateien nach Alter
Hallo zusammen,
ich habe ein PowerShell Script welches mir Dateien aus einem freigegebenen Verzeichnis nach Dateiendung und Alter löscht
Soweit so gut. Nach ersten Tests und dem Logfile
Sieht für mich aus, als würde das Script die Dateien in den Papierkorb schieben wollen.
Kann mir hier jemand helfen, damit ich die Daten hart gelöscht bekomme?
Vielen Dank,
Gruß Tak
ich habe ein PowerShell Script welches mir Dateien aus einem freigegebenen Verzeichnis nach Dateiendung und Alter löscht
#
# Beschreibung:
# Dieses Skript löscht Dateien, die eine bestimmte Anzahl von Tagen alt sind. Die Dateierweiterungen, das Alter sowie der Ablageort sind definierbar.
# Der Löschvorgang erstreckt sich auf alle Unterordner
# Alle Operationen werden in einem Logfile im Quellordner gespeichert
#
# Hier können Sie den Quellordner, das Alter der Dateien (in Tagen) und die Dateierweiterungen festlegen
$Source = "\\synology-nas\share\" # Wichtig: muss mit "\" enden
$Days = 14 # Anzahl der Tage, nach denen die Dateien gelöscht werden
$ext = "*.pdf" # Array - erweitern mit ,".xyz"
$log = "$Source$(get-date -format yymmddHHmmss).txt"
$DateBeforeXDays = (Get-Date).AddDays(-$Days)
# Start Script
start-transcript $log
write-host "--------------------------------------------------------------------------------------"
write-host "Löschen aller Dateien ($ext) im Ordner $Source die älter sind als $Days Tage."
write-host "--------------------------------------------------------------------------------------"
get-childitem $Source* -include $ext -recurse | where {$_.lastwritetime -lt $DateBeforeXDays -and -not $_.psiscontainer} | remove-item -force -verbose
stop-transcript
Soweit so gut. Nach ersten Tests und dem Logfile
**********************
nStart der Windows PowerShell-Aufzeichnung
Startzeit: 20250310030002
Benutzername: xxx
RunAs-Benutzer: xxx
Konfigurationsname:
Computer: xxx(Microsoft Windows NT 10.0.20348.0)
Hostanwendung: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command C:\xxx\xxx.ps1
Prozess-ID: 2444
PSVersion: 5.1.20348.2582
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.20348.2582
BuildVersion: 10.0.20348.2582
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Die Aufzeichnung wurde gestartet. Die Ausgabedatei ist "\\synology-nas\share\250010030002.txt".
--------------------------------------------------------------------------------------
Löschen aller Dateien (*.pdf *.txt) im Ordner \\synology-nas\share\ die älter sind als 14 Tage.
--------------------------------------------------------------------------------------
get-childitem : Unerwarteter Netzwerkfehler.
In C:\Bereinigung_xxx\xxx.ps1:19 Zeichen:1
+ get-childitem $Source* -include $ext -recurse | where {$_.lastwriteti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (\\synology-nas\share\#recycle:String) [Get-ChildItem], IOException
+ FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
get-childitem : Unerwarteter Netzwerkfehler.
In C:\Bereinigung_xxx\xx.ps1:19 Zeichen:1
+ get-childitem $Source* -include $ext -recurse | where {$_.lastwriteti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ReadError: (\\synology-nas\share\#recycle:String) [Get-ChildItem
], IOException
+ FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChildItemCommand
**********************
Ende der Windows PowerShell-Aufzeichnung
Endzeit: 20250310030037
**********************
Kann mir hier jemand helfen, damit ich die Daten hart gelöscht bekomme?
Vielen Dank,
Gruß Tak
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 671850
Url: https://administrator.de/forum/loeschen-von-dateien-nach-alter-671850.html
Ausgedruckt am: 10.03.2025 um 17:03 Uhr
3 Kommentare
Neuester Kommentar
Ich sage ja. Den Asterisk hast du ja schon über $ext. Mach da nur ein PDF draus und filtere mit dem Asterisk, dann sieht das ungefähr so aus.
PS: -Filter ist schneller als -Include. Ersteres filtert schon beim Ausführen, letzteres filtert erst nach dem Abruf der Elemente aus.
Get-ChildItem -Path $Source -Filter "*.$ext" -File -Recurse | where ...
PS: -Filter ist schneller als -Include. Ersteres filtert schon beim Ausführen, letzteres filtert erst nach dem Abruf der Elemente aus.