Powershell-Skript löschen alter Dateien
Hallo in die Runde,
hab mal zu diesem Skript eine Frage:
Das Skript läuft ohne Fehlermeldung durch, das Log wird sauber erzeugt, auf den ersten Blick passt eigentlich alles. Nur ein Fehler hat das ganze, er löscht keine einzige Datei.
Falsche Pfade oder so kann ich ausschließen, da im Log die richtigen Dateien und der Pfad ausgewiesen wird. Das Skript hat ursprünglich mal funktioniert, nun wollte ich es
einfach bei einem anderen Server übernehmen und da "verweigert" er. Kann es an dem Verzeichnis liegen? Kann PowerShell eine Datei in einem Netzwerkpfad nicht löschen?
Im voraus besten Dank für eure Ideen.
hab mal zu diesem Skript eine Frage:
$Verzeichnis = "\\serverip\Archiv_DBD"
$Tage= "-28"
$Logfile = "M:\Logfile.txt"
"
Prüfung auf veraltete Dateien im Verzeichnis: $Verzeichnis / Älter als: $Tage" >> $Logfile
"Diese Dateien stehen zur Löschung an:" >> $Logfile
"Beginn der Bereinigung "+(get-date)+"" >> $Logfile
Get-ChildItem -Path "$Verzeichnis" -recurse | Where {$_.CreationTime -lt (get-date).adddays($Tage)} | ft Name, CreationTime, @{Name="Size in GB";Expression={ "{0:N3}" -f ($_.Length / 1GB)}}, Directory >> $Logfile
Get-ChildItem -Path "$Verzeichnis" -recurse | Where {$_.CreationTime -lt (get-date).adddays($Tage)} | Remove-Item -force -verbose -include .7z >> $Logfile
"Ende der Bereinigung "+(get-date)+"" >> $Logfile
Das Skript läuft ohne Fehlermeldung durch, das Log wird sauber erzeugt, auf den ersten Blick passt eigentlich alles. Nur ein Fehler hat das ganze, er löscht keine einzige Datei.
Falsche Pfade oder so kann ich ausschließen, da im Log die richtigen Dateien und der Pfad ausgewiesen wird. Das Skript hat ursprünglich mal funktioniert, nun wollte ich es
einfach bei einem anderen Server übernehmen und da "verweigert" er. Kann es an dem Verzeichnis liegen? Kann PowerShell eine Datei in einem Netzwerkpfad nicht löschen?
Im voraus besten Dank für eure Ideen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 377593
Url: https://administrator.de/contentid/377593
Ausgedruckt am: 25.11.2024 um 12:11 Uhr
3 Kommentare
Neuester Kommentar
Servus.
Wundert mich ehrlich gesagt nicht daß er nichts löscht .
Btw. Die Dateien doppelt zu enumerieren ist schon ziemlich ineffizient, ganz zu schweigen das dann von den Dateien die im Log landen tatsächlich nur die 7z gelöscht werden sollen. Für den der das Logfile liest stiftet das nur Verwirrung.
Grüße Uwe
Wundert mich ehrlich gesagt nicht daß er nichts löscht .
-include .7z
Da fehlt das berühmte Wildcard-Sternchen(*) oder willst du nur Dateien löschen die exakt .7z lauten?Btw. Die Dateien doppelt zu enumerieren ist schon ziemlich ineffizient, ganz zu schweigen das dann von den Dateien die im Log landen tatsächlich nur die 7z gelöscht werden sollen. Für den der das Logfile liest stiftet das nur Verwirrung.
$Verzeichnis = '\\serverip\Archiv_DBD'
$Tage = 28
$Logfile = 'M:\Logfile.txt'
Start-Transcript $logfile
"Prüfung auf veraltete Dateien im Verzeichnis: $Verzeichnis / Älter als: $Tage
Diese Dateien stehen zur Löschung an:"
$files = Get-ChildItem -Path $Verzeichnis -recurse -Include *.7z | ?{$_.CreationTime -lt (get-date).adddays(-$Tage)}
$files | ft Name, CreationTime, @{Name="Size in GB";Expression={ "{0:N3}" -f ($_.Length / 1GB)}}, Directory -Autosize -Wrap
"Beginn der Bereinigung $(get-date -f G)"
$files | Remove-Item -force -verbose
"Ende der Bereinigung $(get-date -f G)"
Stop-Transcript
Kann PowerShell eine Datei in einem Netzwerkpfad nicht löschen?
Ein Auto das man schieben muss?? Soweit ist es dann doch noch nicht. Solange du darfst, darfst du auch löschen, aber wenn du deinen Filter nicht richtig baust löscht er auch nichts.Grüße Uwe