Verwenden des Cmdlet \"Remove-Item\"

Löschen einer Datei oder eines Ordners (oder anderer Objekttypen)

Das Cmdlet Remove-Item führt genau das aus, wofür sein Name steht: Es ermöglicht Ihnen, bestimmt Objekte endgültig wieder loszuwerden. Kein Interesse mehr an der Datei "C:\Scripts\Test.txt"? Dann löschen Sie diese:

Remove-Item c:\scripts\test.txt

Sie können auch Platzhalterzeichen verwenden, um mehrere Elemente zu entfernen. Mit folgendem Befehl entfernen Sie beispielsweise alle Dateien in "C:\Scripts":

Remove-Item c:\scripts\*

Das hat allerdings einen Haken. Nehmen wir an, "C:\Scripts" enthält Unterordner. In diesem Fall werden Sie gefragt, ob Sie wirklich alles im Ordner "Scripts" löschen möchten:

Confirm
The item at C:\test\scripts has children and the -recurse parameter was not specified. 
If you continue, all children will be removed with the item. Are you sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):

Kann man diese Eingabeaufforderung umgehen? Ja, fügen Sie am Ende des Befehls einfach den Parameter –recurse hinzu:

Remove-Item c:\scripts\* -recurse

Es gibt eine interessante Variation. Nehmen wir an, der Ordner "Scripts" enthält einige Dateien, die Sie alle löschen möchten. Warten Sie: Vielleicht doch nicht alle Dateien. Die WAV-Dateien sollen erhalten bleiben. Kein Problem: Verwenden Sie einfach den Parameter –exclude, und geben Sie die Dateitypen an, die nicht gelöscht werden sollen:

Remove-Item c:\scripts\* -exclude *.wav

Und nun? Nun möchten Sie nur WAV- und MP3-Dateien entfernen und alle anderen Dateitypen belassen? Dafür hätten Sie nur fragen müssen (und den Parameter –include verwenden sollen):

Remove-Item c:\scripts\* -include .wav,.mp3

Wie Sie möglicherweise schon herausgefunden haben: Wenn Sie den Parameter –include verwenden, wird das Cmdlet nur aufgrund der Elemente ausgeführt, die Teil dieses Parameters sind. (Und natürlich können Sie mehrere Elemente angeben, trennen Sie diese einfach durch Kommas.) Wenn Sie im Gegensatz dazu den Parameter –exclude verwenden, werden diese Elemente von den Cmdlet-Aktionen nicht berücksichtigt.

Und wenn Sie es wirklich wünschen, können Sie sowohl –include als auch –exclude im gleichen Befehl verwenden. Was meinen Sie, wird passieren, wenn wir diesen Befehl ausführen?

Remove-Item c:\scripts\* -include *.txt -exclude *test*

Ganz richtig: Alle TXT-Dateien (wie durch den Parameter –include angegeben), die im Ordner "C:\Scripts" gespeichert sind, werden gelöscht, außer Dateien mit der Zeichenfolge test im Dateinamen (wie durch den Parameter –exclude angegeben). Versuchen Sie es mit Variationen, und Ihnen wird sich alles ganz schnell erschließen.

Zufällig verfügt das Cmdlet Remove-Item über den Parameter –whatif, der tatsächlich nichts entfernt, Ihnen aber Informationen darüber ausgibt, was passieren würde, wenn Sie Remove-Item aufgerufen hätten. Das ergibt überhaupt keinen Sinn? Schauen Sie sich diesen Befehl an:

Remove-Item c:\scripts\*.vbs -whatif

Wenn wir diesen Befehl ausführen, werden VBS-Dateien im Ordner "C:\Scripts" nicht entfernt. Allerdings erhalten wir folgende Informationen, die darauf hinweisen, welche Dateien entfernt werden würden, wenn wir Remove-Item ohne den Parameter –whatif aufgerufen hätten:

What if: Performing operation "Remove File" on Target "C:\scripts\imapi.vbs".
What if: Performing operation "Remove File" on Target "C:\scripts\imapi2.vbs".
What if: Performing operation "Remove File" on Target "C:\scripts\methods.vbs".
What if: Performing operation "Remove File" on Target "C:\scripts\read-write.vbs
".
What if: Performing operation "Remove File" on Target "C:\scripts\test.vbs".
What if: Performing operation "Remove File" on Target "C:\scripts\winsat.vbs".

Zusätzlich können Sie auch andere Elemente wie Dateien und Ordner entfernen. Mit diesem Befehl beispielsweise entfernen Sie den Alias "show":

Remove-Item alias:\show

Beachten Sie dabei, wie der Speicherort angegeben wird: alias:\. Das ist die Standardbezeichnung für alle Windows PowerShell-Laufwerke: erst der Laufwerksbuchstabe, dann ein Semikolon und am Ende "\". Wenn Sie beispielsweise zum Windows PowerShell-Laufwerk für Umgebungsvariablen wechseln wollen, verwenden Sie diesen Befehl:

Set-Location env:\

Aliase für "Remove-Item"

  • ri

  • rd

  • erase

  • rm

  • rmdir

  • del