PowerShell Datei löschen - so einfach kannst du das machen

Per PowerShell Datei löschen – so geht’s!

Grundsätzliches

Möchtest du mit der PowerShell Datei löschen? Oft ist man damit viel schneller und man hat auch wesentlich mehr Möglichkeit als mit der grafischen Oberfläche.

Nicht selten hat man auf einem Windows System viele Dateien liegen. Interessant dabei ist u. a. das Alter der Dateien. Um hier evtl. Dateileichen ausfindig zu machen, gibt es in der PowerShell ein paar Cmdlets, mit welchen man das Alter der Dateien auslesen kann.

Ein weiterer möglicher Schritt wäre dann evtl. die Löschung dieser Daten. Klar geht das auch mit dem Windows Explorer, jedoch benötigt man dafür doch immer einige Klicks. Schneller ist man in der Regel immer mit der Kommandozeile.

In diesem Beispiel verwende ich die PowerShell, da sie im Windows Scripting Bereich die Zukunftstechnologie ist.

Per PowerShell Datei löschen

Das grundlegende Cmdlet zum Löschen einer Datei mithilfe der Windows PowerShell ist Remove-item. Damit kannst du direkt eine Datei oder einen Ordner löschen. Für eine detaillierte Hilfe kannst du am besten den Parameter „detailed“.

Get-Help Remove-Item -detailed

Daten nach letzter Änderung auflisten

Hilfreich ist als Erstes das Cmdlet Get-ChildItem mit dem Parameter Recurse. Hier wird ein Pfad ausgewählt, welche rekursiv (also auch mit dessen Unterordner) durchsucht wird.

Das Ergebnis wird anschließend nach dessen Bearbeitungsdatum durchsucht.

Get-ChildItem "d:\Dokumente" -Recurse | Where-Object {$_.LastWriteTime}

PowerShell Datei löschen, die älter als ein Jahr sind

Jetzt werden allen Dateien mit dem Erstellungsdatum aufgelistet. Jetzt möchte man im nächsten Schritt allerdings, dass nur die Dateien aufgelistet werden, welche ein bestimmtes Alter haben.

Im Beispiel sollen allen Dateien aufgelistet werden, welche bereits ein Jahr (365 Tage) alt sind. Im nächsten Schritt wäre es möglich, alle diese Dateien anschließend direkt zu löschen.

Für die Weiterleitung einer Ausgabe an einen weiteren Befehl eignet sich hervorragend die Pipe.

Get-ChildItem "d:\Dokumente" -Recurse |-Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-365))}

Nur Bilddateien, die älter als ein Jahr sind, auflisten

Das Tolle an der Windows PowerShell ist natürlich, dass man jederzeit noch viele Erweiterungen hinzufügen kann. So wäre jetzt auch noch denkbar, dass man nur bestimmte alte Dateiarten anzeigen lässt.

Im Beispiel sollten alle Bilder, welche älter als ein Jahr sind, aufgelistet werden.

Get-ChildItem "d:\Dokumente" -Recurse |-Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-365) -and ($_.Extension -match "jpg"))}

Alle Bilddateien, die älter als ein Jahr, sind löschen

Als letzten Schritt könne man sich noch überlegen, dass die gefundenen Dateien gelöscht werden. Hier hängt man mittels der Pipe nur noch das Cmdlet Remove-Item an.

Schon werden sämtliche so gefundenen Dateien gelöscht. Bevor man allerdings die Daten löscht, solle man sich die Daten schon genau ansehen, nicht dass hier noch wichtig Unterlagen dabei sind.

Get-ChildItem "d:\Dokumente" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-365) -and ($_.Extension -match "jpg"))} | Remove-Item

Per PowerShell Datei löschen mit Visual Studio Code

Für das Arbeiten mit der Windows PowerShell kannst du zum einen, die Windows PowerShell ISE verwenden und zum anderen den Editor Visual Studio Code. Wenn du dich näher uns ausführlicher mit der Windows PowerShell beschäftigen möchtest, dann würde ich dir unbedingt Visual Studio Code empfehlen.

Dies ist ein hervorragender Kurs, um damit PowerShell Scripte erstellen zu können. Im Online-Kurs von Patrick Grünauer, wird ausführlich gezeigt, welche Optionen und welche Mach Visual Studio Code hat.

Download und Fazit

Gerade die Windows PowerShell bietet für diese Art von Aufgaben enormes Potenzial. Klar, für einen Heimanwender reicht auch mal der Windows Explorer aus. Wie sieht es allerdings aus, wenn man mehrere Windows Server betreibt?

So z. B. auch einen Dateiserver. Hier, denke ich, ist es sehr interessant, sich die Daten auflisten zu lassen, welche schon eine längere Zeit nicht mehr benötigt wurden.

Natürlich muss man diese nicht gleich löschen, aber evtl. könnte man dieses weg sichern auf eine zusätzliche externe Festplatte, sodass man z. B. wieder mehr Speicherplatz auf dem System erhält.

Um also mit der PowerShell Datei löschen zu können, ist im Prinzip nur ein wesentliches Cmdlet nötig. Aber in Kombination mit der Pipe und einigen Filtern, lässt sich damit viel zu einzelnen Dateien herausfinden. Genau das ist auch, was die Windows PowerShell für Administratoren zu Interessant macht.

Die einzelnen Cmdlets habe ich in ein Script verpackt, welchem man die verschiedenen Parameter wie, Dateipfad, Alter der Dateien oder Dateifilter übergeben kann. Gerne könnt ihr euch das Script hier downloaden:

dd4646d7718046bf84f14cd49f7a120e

Weitere Anleitungen zur Windows PowerShell

Der Blogbetreiber und Autor: Markus Elsberger

Über den Autor

Mein Name ist Markus Elsberger und ich beschäftige mich mit der Administration von Windows und Linux Systemen sowie mit diversen Themen bzgl. Netzwerktechnik. In meiner Lehrtätigkeit erstelle ich verschiedene Szenarien und teste auch verschiedene Konfigurationen, welche ich in diesem Blog festhalten möchte.


Kostenlose Befehlsreferenzen und E-Books
(Netzwerkanalyse, Benutzerverwaltung, Festplattenkonfiguration, u. v. m.)


Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

×