Remove-Item
Löscht die angegebenen Elemente.
Syntax
Remove-Item
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-Stream <String[]>]
[<CommonParameters>]
Remove-Item
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-Stream <String[]>]
[<CommonParameters>]
Remove-Item
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-DeleteKey]
[<CommonParameters>]
Remove-Item
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-DeleteKey]
[<CommonParameters>]
Remove-Item
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Recurse]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Item
-LiteralPath <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Recurse]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Das Cmdlet Remove-Item
löscht mindestens ein Element. Da es von vielen Anbietern unterstützt wird, kann es viele verschiedene Arten von Elementen löschen, darunter Dateien, Ordner, Registrierungsschlüssel, Variablen, Aliase und Funktionen.
Beispiele
Beispiel 1: Löschen von Dateien mit dateierweiterung
In diesem Beispiel werden alle Dateien mit Namen gelöscht, die einen Punkt (.
) aus dem Ordner C:\Test
enthalten.
Da der Befehl einen Punkt angibt, löscht der Befehl keine Ordner oder Dateien ohne Dateierweiterung.
Remove-Item C:\Test\*.*
Beispiel 2: Löschen von Dokumentdateien in einem Ordner
In diesem Beispiel wird aus dem aktuellen Ordner alle Dateien gelöscht, die über eine .doc
Dateierweiterung und einen Namen verfügen, der nicht *1*
enthält.
Remove-Item * -Include *.doc -Exclude *1*
Es verwendet das Wildcardzeichen (*
), um den Inhalt des aktuellen Ordners anzugeben. Es verwendet die parameter Include und Exclude Parameter, um die zu löschenden Dateien anzugeben.
Beispiel 3: Löschen ausgeblendeter, schreibgeschützter Dateien
Mit diesem Befehl wird eine Datei gelöscht, die ausgeblendeten und schreibgeschützten.
Remove-Item -Path C:\Test\hidden-RO-file.txt -Force
Er verwendet den parameter Path, um die Datei anzugeben. Er verwendet den Force Parameter, um ihn zu löschen. Ohne Forcekönnen Sie schreibgeschützteoder ausgeblendete Dateien nicht löschen.
Beispiel 4: Rekursives Löschen von Dateien in Unterordnern
Dieser Befehl löscht alle CSV-Dateien im aktuellen Ordner und alle Unterordner rekursiv.
Da der Recurse-Parameter in Remove-Item
ein bekanntes Problem aufweist, verwendet der Befehl in diesem Beispiel Get-ChildItem
, um die gewünschten Dateien abzurufen, und verwendet dann den Pipelineoperator, um sie an Remove-Item
zu übergeben.
Get-ChildItem * -Include *.csv -Recurse | Remove-Item
Im Befehl Get-ChildItem
weist Path einen Wert von (*
) auf, der den Inhalt des aktuellen Ordners darstellt. Es verwendet Include-, um den CSV-Dateityp anzugeben, und es verwendet Recurse-, um den Abruf rekursiv zu machen. Wenn Sie versuchen, den Dateityp im Pfad anzugeben, z. B. -Path *.csv
, interpretiert das Cmdlet den Betreff der Suche so, dass es sich um eine Datei ohne untergeordnete Elemente handelt, und Recurse fehlschlägt.
Anmerkung
Dieses Verhalten wurde in Windows-Versionen 1909 und höher behoben.
Beispiel 5: Rekursives Löschen von Unterschlüsseln
Mit diesem Befehl wird der Registrierungsschlüssel "OldApp" und alle zugehörigen Unterschlüssel und Werte gelöscht. Es verwendet Remove-Item
, um den Schlüssel zu entfernen. Der Pfad wird angegeben, aber der optionale Parametername (Path) wird weggelassen.
Der Recurse Parameter löscht alle Inhalte des OldApp-Schlüssels rekursiv. Wenn der Schlüssel Unterschlüssel enthält und Sie den parameter Recurse weglassen, werden Sie aufgefordert, zu bestätigen, dass Sie den Inhalt des Schlüssels löschen möchten.
Remove-Item HKLM:\Software\MyCompany\OldApp -Recurse
Beispiel 6: Löschen von Dateien mit Sonderzeichen
Das folgende Beispiel zeigt, wie Dateien gelöscht werden, die Sonderzeichen wie Klammern oder Klammern enthalten.
Get-ChildItem
Directory: C:\temp\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 6/1/2018 12:19 PM 1362 myFile.txt
-a--- 6/1/2018 12:30 PM 1132 myFile[1].txt
-a--- 6/1/2018 12:19 PM 1283 myFile[2].txt
-a--- 6/1/2018 12:19 PM 1432 myFile[3].txt
Get-ChildItem | Where-Object Name -Like '*`[*'
Directory: C:\temp\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 6/1/2018 12:30 PM 1132 myFile[1].txt
-a--- 6/1/2018 12:19 PM 1283 myFile[2].txt
-a--- 6/1/2018 12:19 PM 1432 myFile[3].txt
Get-ChildItem | Where-Object Name -Like '*`[*' | ForEach-Object { Remove-Item -LiteralPath $_.Name }
Get-ChildItem
Directory: C:\temp\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 6/1/2018 12:19 PM 1362 myFile.txt
Beispiel 7: Entfernen eines alternativen Datenstroms
In diesem Beispiel wird gezeigt, wie Sie den Stream dynamischen Parameter des Cmdlets Remove-Item
verwenden, um einen alternativen Datenstrom zu löschen. Der Streamparameter wird in Windows PowerShell 3.0 eingeführt.
Get-Item C:\Test\Copy-Script.ps1 -Stream Zone.Identifier
FileName: \\C:\Test\Copy-Script.ps1
Stream Length
------ ------
Zone.Identifier 26
Remove-Item C:\Test\Copy-Script.ps1 -Stream Zone.Identifier
Get-Item C:\Test\Copy-Script.ps1 -Stream Zone.Identifier
Get-Item : Could not open alternate data stream 'Zone.Identifier' of file 'C:\Test\Copy-Script.ps1'.
Der Stream Parameter Get-Item
ruft den Zone.Identifier
Datenstrom der Copy-Script.ps1
Datei ab.
Remove-Item
verwendet den Parameter Stream, um den Zone.Identifier
Datenstrom der Datei zu entfernen. Schließlich zeigt das cmdlet Get-Item
an, dass der Zone.Identifier
Stream gelöscht wurde.
Parameter
-Confirm
Fordert Sie vor dem Ausführen des Cmdlets zur Bestätigung auf. Weitere Informationen finden Sie in den folgenden Artikeln:
Typ: | SwitchParameter |
Aliase: | cf |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Credential
Anmerkung
Dieser Parameter wird von anbietern, die mit PowerShell installiert sind, nicht unterstützt. Verwenden Sie Invoke-Command-, um die Identität eines anderen Benutzers zu imitieren oder Ihre Anmeldeinformationen beim Ausführen dieses Cmdlets zu erhöhen.
Typ: | PSCredential |
Position: | Named |
Standardwert: | Current user |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-DeleteKey
Dies ist ein dynamischer Parameter, der vom anbieter Certificate zur Verfügung gestellt wird. Der Anbieter Zertifikats und dieser Parameter sind nur auf Windows-Plattformen verfügbar.
Wenn angegeben, löscht das Cmdlet den privaten Schlüssel, wenn das Zertifikat gelöscht wird.
Weitere Informationen findest du unter about_Certificate_Provider.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Exclude
Gibt als String-Array ein oder mehrere Elemente an, die dieses Cmdlet im Vorgang ausschließt. Der Wert dieses Parameters qualifiziert den parameter Path. Geben Sie ein Pfadelement oder Muster ein, z. B. *.txt
. Platzhalterzeichen sind zulässig. Der Exclude Parameter ist nur wirksam, wenn der Befehl den Inhalt eines Elements enthält, z. B. C:\Windows\*
, wobei das Wildcardzeichen den Inhalt des C:\Windows
Verzeichnisses angibt.
Wenn Sie rekursieren mit Ausschließen, Ausschließen nur Ergebnisse des aktuellen Verzeichnisses filtert. Wenn Dateien vorhanden sind, die dem "Ausschließen Muster in Unterordnern" entsprechen, werden diese Dateien zusammen mit dem übergeordneten Verzeichnis entfernt.
Typ: | String[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
-Filter
Gibt einen Filter an, der den parameter Path qualifizieren soll. Der FileSystem--Anbieter ist der einzige installierte PowerShell-Anbieter, der die Verwendung von Filtern unterstützt. Sie finden die Syntax für die FileSystem Filtersprache in über_Wildcards. Filter sind effizienter als andere Parameter, da der Anbieter sie anwendet, wenn das Cmdlet die Objekte abruft, anstatt powerShell nach dem Abrufen der Objekte zu filtern.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
-Force
Erzwingt das Cmdlet, Elemente zu entfernen, die andernfalls nicht geändert werden können, z. B. ausgeblendete oder schreibgeschützte Dateien oder schreibgeschützte Aliase oder Variablen. Das Cmdlet kann keine Konstantenalias oder Variablen entfernen. Die Implementierung variiert von Anbieter zu Anbieter. Weitere Informationen finden Sie unter über_Anbieter. Selbst bei Verwendung des parameters Force kann das Cmdlet keine Sicherheitseinschränkungen außer Kraft setzen.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Include
Gibt als Zeichenfolgenarray ein oder mehrere Elemente an, die dieses Cmdlet in den Vorgang einbezieht. Der Wert dieses Parameters qualifiziert den parameter Path. Geben Sie ein Pfadelement oder Muster ein, z. B. "*.txt"
. Platzhalterzeichen sind zulässig. Die Include-Parameter ist nur wirksam, wenn der Befehl den Inhalt eines Elements enthält, z. B. C:\Windows\*
, wobei das Wildcardzeichen den Inhalt des C:\Windows
Verzeichnisses angibt.
Typ: | String[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
-LiteralPath
Gibt einen Pfad zu einem oder mehreren Speicherorten an. Der Wert LiteralPath- wird genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Wildcards interpretiert. Wenn der Pfad Escapezeichen enthält, schließen Sie ihn in einfache Anführungszeichen ein. Einfache Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.
Weitere Informationen finden Sie unter über_Zitierregeln.
Typ: | String[] |
Aliase: | PSPath, LP |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Path
Gibt einen Pfad der zu entfernenden Elemente an. Platzhalterzeichen sind zulässig.
Typ: | String[] |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | True |
-Recurse
Gibt an, dass dieses Cmdlet die Elemente an den angegebenen Speicherorten und in allen untergeordneten Elementen der Speicherorte löscht.
Der parameter Recurse möglicherweise nicht alle Unterordner oder alle untergeordneten Elemente löschen. Dies ist ein bekanntes Problem.
Anmerkung
Dieses Verhalten wurde in Windows-Versionen 1909 und höher behoben.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Stream
Dies ist ein dynamischer Parameter, der vom FileSystem Provider zur Verfügung gestellt wird. Dieser Parameter ist nur unter Windows verfügbar. Dieser Parameter kann nicht in Kombination mit dem parameter Recurse verwendet werden.
Sie können Remove-Item
verwenden, um einen alternativen Datenstrom zu löschen, z. B. Zone.Identifier
.
Es ist jedoch nicht die empfohlene Möglichkeit, Sicherheitsüberprüfungen zu beseitigen, die Dateien blockieren, die aus dem Internet heruntergeladen werden. Wenn Sie überprüfen, ob eine heruntergeladene Datei sicher ist, verwenden Sie das Cmdlet Unblock-File
.
Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt. Ab Windows PowerShell 7.2 können Remove-Item
alternative Datenströme aus Verzeichnissen und Dateien entfernen.
Weitere Informationen finden Sie unter about_FileSystem_Provider.
Typ: | String[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Typ: | SwitchParameter |
Aliase: | wi |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können eine Zeichenfolge, die einen Pfad, aber keinen Literalpfad enthält, an dieses Cmdlet weiterleiten.
Ausgaben
None
Dieses Cmdlet gibt keine Ausgabe zurück.
Hinweise
PowerShell enthält die folgenden Aliase für Remove-Item
:
- Alle Plattformen:
del
erase
rd
ri
- Fenster:
rm
rmdir
Das Cmdlet Remove-Item
ist für die Arbeit mit den Daten konzipiert, die von einem beliebigen Anbieter verfügbar gemacht werden. Geben Sie Get-PsProvider
ein, um die in Ihrer Sitzung verfügbaren Anbieter auflisten zu können. Weitere Informationen finden Sie unter über_Anbieter.
Wenn Sie versuchen, einen Ordner zu löschen, der Elemente enthält, ohne den parameter Recurse zu verwenden, fordert das Cmdlet zur Bestätigung auf. Die Verwendung von -Confirm:$false
unterdrückt die Eingabeaufforderung nicht. Dies ist beabsichtigt.