5 Stimmen

Powershell-Skript zum Löschen alter Dateien

Das folgende Skript löscht Dateien in einem benannten Verzeichnis, die älter als 14 Tage sind, und schreibt sie in ein .txt mit dem Pfad und den gelöschten Dateien (dieses Skript habe ich in einem anderen Forum gefunden - Dank an Shay):

dir c:\tmp -recurse | where {!$_.PsIsContainer -AND $_.lastWriteTime -lt (Get-Date).AddDays(-14) } | select LastWriteTime,@{n="Path";e={convert-path $_.PSPath}} | tee c:\oldFiles.txt | Remove-Item -force -whatif

Ich habe 3 Fragen:

  1. Was ist -lt und was ist -le und was ist -gt ? Wann würde ich welche verwenden?
  2. Das obige Skript löscht nur Dateien...wie kann ich auch Ordner löschen?
  3. Das obige Skript basiert auf LastWriteTime was ist mit CreatedDate o LastAccessed Zeit?

9voto

Macaubas Punkte 1851

Okay, los geht's:

  1. -lt, -le und -gt sind Vergleichsoperatoren. lt bedeutet kleiner als, le bedeutet kleiner oder gleich als und gt bedeutet größer als.

  2. Das Entfernen von Ordnern kann gefährlich werden, wenn Sie keine Kontrolle darüber haben, was in den Ordner gelangt. Sie könnten Probleme bekommen und sollten sich des Datenverlustes bewusst sein. Sie können Ordner mit demselben Cmdlet "Remove-Item" löschen, indem Sie mit dessen Optionen spielen. Schauen Sie sich diesen Artikel an, er enthält eine gute Anleitung dazu: http://searchwindowsserver.techtarget.com/generic/0,295582,sid68_gci1275887,00.html

  3. Bei Dateien, die schon eine Weile dort liegen, sind LastWriteTime, CreatedDate und LastAccessTime normalerweise identisch. Bei einer schreibgeschützten Datei, wie einer DLL, kann LastAccessTime neuer sein als die beiden anderen. In einer Lese-/Schreibdatei (wie der PST-Datei von Outlook) können WriteTime und AccessTime identisch sein. Im Grunde ist das ganz Ihnen überlassen. Sie funktionieren auf dieselbe Weise wie LastWriteTime. Berücksichtigen Sie die Art der Dateien, die Sie löschen möchten, und machen Sie weiter!

3voto

Die -lt -le und -gt sind Vergleichsoperatoren anstelle von <, <=, >. Typ " Hilfe über_Vergleichsoperatoren " an der Powershell-Eingabeaufforderung für die Details zu jedem Typ und den Grund für die Verwendung dieser Typen anstelle derjenigen, die Sie aus anderen Sprachen kennen.

Um auch Ordner zu löschen, müssen Sie die !$.PsIsContainer AND Teil des Wo-Filters. Damit werden alle Elemente aus den Listen entfernt, die Verzeichnisse sind.

Ich bin mir nicht sicher, worauf Sie mit der Frage "Was ist mit CreatedDate oder LastAccessed time?" hinauswollen, aber Sie können diese Eigenschaften einfach auf ähnliche Weise wie LastWriteTime verwenden, aber Sie müssen sich für die Logik entscheiden, die Sie erreichen wollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X