Powershell-Skript zum löschen Alter Dateien
Das folgende Skript löscht Dateien, die in einem namens-Verzeichnis, die älter als 14 Tage und schreiben Sie eine .txt
mit dem Pfad und die Dateien gelöscht (fand Sie dieses Skript auf einem anderen forum..Kredit zu 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
Habe ich 3 Fragen:
- Was ist
-lt
und was ist-le
und was ist-gt
? Wenn würde ich jeder - Das obige Skript löscht nur die Datei...wie kann ich Ordner löschen, wie auch?
- Das script oben ist aus der Basis von
LastWriteTime
.. wasCreatedDate
oderLastAccessed
Zeit?
- Ich denke, dass {!$.PsIsContainer -UND $."lastWriteTime" haben sollte, unterstreicht für die pipeline-variable, d.h. {!$_.PsIsContainer -UND $_."lastWriteTime"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, hier wir gehen:
-lt, -le und -gt sind Vergleichsoperatoren. lt bedeutet weniger als, le bedeutet kleiner oder gleich, und gt bedeutet größer als.
Entfernen von Ordnern können gefährlich sein, wenn Sie nicht die Kontrolle über das, was kommt hinein. Sie könnten Probleme haben und bitte seien Sie sich bewusst von Datenverlust. Sie können löschen Sie die Ordner mit der gleichen cmdlet Remove-Item, nur durch das Spiel mit seinen Optionen. Lesen Sie diesen Artikel, es hat große Anweisungen auf, wie es zu erreichen:
http://searchwindowsserver.techtarget.com/generic/0,295582,sid68_gci1275887,00.html
In der Regel für Dateien, die Sitzung für eine Weile dort, und "lastwritetime" CreatedDate und LastAccessTime wird die gleiche sein. In einem nur-lese-Datei, wie eine DLL, LastAccessTime könnte neuer sein, als die anderen beiden. In Lesen/schreiben einer Datei (wie z.B. outlook pst-Datei) WriteTime und Zugriffszeit ist die gleiche. Im Grunde, das ist völlig bis zu Ihnen. Sie arbeiten in der gleichen Weise wie die "LastWriteTime" tut. Betrachten Sie die Art der Dateien, die Sie löschen möchten, und gehen Sie voran!
Den -lt -le und gt sind die Vergleichsoperatoren anstelle von <, <=, >. Typ "help about_Comparison_Operators" an der powershell-Eingabeaufforderung für die details auf jeder Art und der Grund für diese, anstatt die, die Sie sind vertraut mit den aus anderen Sprachen.
Ordner löschen, so müssen Sie entfernen Sie die !$.PsIsContainer UND Teil der where-filter. Dies ist das entfernen aller Elemente aus den Listen sind Verzeichnisse.
Ich bin mir nicht sicher, was Sie nach der mit der Frage "was ist CreatedDate oder LastAccessed Zeit", aber Sie können einfach verwenden Sie diese Eigenschaften in ähnlicher Weise wie die "LastWriteTime" aber Sie müssen entscheiden, auf die Logik, die Sie versuchen, zu erreichen.