Remove-Item
Löscht die angegebenen Elemente.
Syntax
Path (Standard)
Remove-Item
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-Stream <String[]>]
[<CommonParameters>]
LiteralPath
Remove-Item
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-Stream <String[]>]
[<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, einschließlich Dateien, Ordnern, Registrierungsschlüsseln, Variablen, Aliasen und Funktionen.
Beispiele
Beispiel 1: Löschen von Dateien mit einer beliebigen Dateinamenerweiterung
In diesem Beispiel werden alle Dateien aus dem C:\Test Ordner gelöscht, deren Namen einen Punkt (.) enthalten. Da der Befehl einen Punkt angibt, löscht der Befehl keine Ordner oder Dateien ohne Dateinamenserweiterung.
Remove-Item C:\Test\*.*
Beispiel 2: Löschen einiger Dokumentdateien in einem Ordner
In diesem Beispiel werden alle Dateien aus dem aktuellen Ordner gelöscht, die eine .doc Dateinamenerweiterung und einen Namen aufweisen, *1*der nicht 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: Versteckte, schreibgeschützte Dateien löschen
Mit diesem Befehl wird eine Datei gelöscht, die sowohl ausgeblendet als auch schreibgeschützt ist.
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 Force können Sie schreibgeschützte oder versteckte Dateien nicht löschen.
Beispiel 4: Rekursives Löschen von Dateien in Unterordnern
Mit diesem Befehl werden alle CSV-Dateien im aktuellen Ordner und alle Unterordner rekursiv gelöscht.
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-Itemzu ü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 Pfad des Dateityps anzugeben, z. B -Path *.csv. , interpretiert das Cmdlet den Betreff der Suche als eine Datei, die keine untergeordneten Elemente enthält, und die Rekursion schlägt fehl.
Hinweis
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 eckige Klammern oder runde 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 Parameter StreamGet-Item ruft den Zone.Identifier Stream 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 zur Bestätigung auf, bevor Sie das Cmdlet ausführen. Weitere Informationen finden Sie in den folgenden Artikeln:
- about_Preference_Variables
- about_Functions_CmdletBindingAttribute (Informationen zu Funktionen und dem CmdletBinding-Attribut)
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | vgl |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Credential
Hinweis
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.
Parametereigenschaften
| Typ: | PSCredential |
| Standardwert: | Current user |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-Exclude
Gibt als Array von Zeichenfolgen ein Element oder 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 Recurse mit Exclude verwenden, filtert Exclude nur die Ergebnisse des aktuellen Verzeichnisses. Wenn es in Unterordnern Dateien gibt, die dem Muster Ausschließen entsprechen, werden diese Dateien zusammen mit dem übergeordneten Verzeichnis entfernt.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-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 dass PowerShell die Objekte nach dem Abrufen filtert.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Force
Erzwingt, dass das Cmdlet Elemente entfernt, die nicht anderweitig geändert werden können, z. B. ausgeblendete oder schreibgeschützte Dateien oder schreibgeschützte Aliase oder Variablen. Das Cmdlet kann keine konstanten Aliase 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.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | 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. Der Include Parameter ist nur wirksam, wenn der Befehl den Inhalt eines Elements einbezieht, wie zum Beispiel C:\Windows\*, wobei das Wildcard-Zeichen den Inhalt des C:\Windows-Verzeichnisses angibt.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-LiteralPath
Gibt einen Pfad zu einem oder mehreren Speicherorten an. Der Wert von LiteralPath wird genau so verwendet, wie es geschrieben ist. Es werden keine Zeichen als Wildcards interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen signalisieren PowerShell, dass keine Zeichen als Escapesequenzen interpretiert werden sollen.
Weitere Informationen finden Sie unter über_Zitierregeln.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | PSPath, EP |
Parametersätze
LiteralPath
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-Path
Gibt einen Pfad der zu entfernenden Elemente an. Platzhalterzeichen sind zulässig.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
Path
| Position: | 0 |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-Recurse
Gibt an, dass dieses Cmdlet die Objekte in den angegebenen Speicherorten und in allen untergeordneten Objekten der Speicherorte löscht.
Der Parameter Recurse löscht möglicherweise nicht alle Unterordner oder alle untergeordneten Elemente. Dies ist ein bekanntes Problem.
Hinweis
Dieses Verhalten wurde in Windows-Versionen 1909 und höher behoben.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Stream
Hinweis
Dieser Parameter ist nur unter Windows verfügbar.
Der Stream-Parameter ist ein dynamischer Parameter, den der FileSystem-Provider zu Remove-Item.
Dieser Parameter funktioniert nur auf Dateisystemlaufwerken.
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, Sicherheitsprü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.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Wi |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
String
Sie können eine Zeichenfolge, die einen Pfad, aber keinen wörtlichen Pfad enthält, an dieses Cmdlet weiterleiten.
Ausgaben
None
Dieses Cmdlet gibt keine Ausgabe zurück.
Hinweise
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-PsProviderein, 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. Mit -Confirm:$false unterdrückt die Eingabeaufforderung nicht. Dies ist beabsichtigt.