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>]
Beschreibung
Das Remove-Item
Cmdlet löscht mindestens ein Element. Da es von vielen Anbietern unterstützt wird, können viele verschiedene Arten von Elementen gelöscht werden, darunter Dateien, Ordner, Registrierungsschlüssel, Variablen, Aliase und Funktionen.
Beispiele
Beispiel 1: Löschen von Dateien mit einer Dateinamenerweiterung
In diesem Beispiel werden alle Dateien mit Namen gelöscht, die einen Punkt (.
) aus dem C:\Test
Ordner enthalten. Da der Befehl einen Punkt angibt, löscht der Befehl keine Ordner oder Dateien, die keine Dateinamenerweiterung haben.
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 über eine .doc
Dateinamenerweiterung und einen Namen verfügen, der nicht enthält *1*
.
Remove-Item * -Include *.doc -Exclude *1*
Sie verwendet das Feldhalterzeichen (*
), um den Inhalt des aktuellen Ordners anzugeben. Sie verwendet die Parameter Include und Exclude , um die zu löschenden Dateien anzugeben.
Beispiel 3: Löschen ausgeblendeter, schreibgeschützter Dateien
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
Sie verwendet den Path-Parameter , um die Datei anzugeben. Sie verwendet den Force-Parameter , um ihn zu löschen. Ohne Force können Sie keine schreibgeschützten oder ausgeblendeten Dateien 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 Get-ChildItem
der Befehl in diesem Beispiel, um die gewünschten Dateien abzurufen, und verwendet dann den Pipelineoperator, um sie an zu Remove-Item
übergeben.
Get-ChildItem * -Include *.csv -Recurse | Remove-Item
Get-ChildItem
Im Befehl weist Path den Wert (*
) auf, der den Inhalt des aktuellen Ordners darstellt. Es verwendet Include , um den CSV-Dateityp anzugeben, und es wird Recurse verwendet, um den Abruf rekursiv zu machen. Wenn Sie versuchen, den Dateityp den Pfad anzugeben, z -Path *.csv
. B. , interpretiert das Cmdlet den Betreff der Suche als Datei ohne untergeordnete Elemente, und Recurse schlägt fehl.
Beispiel 5: Rekursives Löschen von Unterschlüsseln
Dieser Befehl löscht den Registrierungsschlüssel "OldApp" und alle zugehörigen Unterschlüssel und Werte. Es wird verwendet Remove-Item
, um den Schlüssel zu entfernen. Der Pfad wird angegeben, aber der optionale Parametername (Path) wird nicht angegeben.
Der Recurse-Parameter löscht den gesamten Inhalt 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 dynamischen Parameter Stream des Remove-Item
Cmdlets 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'.
At line:1 char:1
+ Get-Item 'C:\Test\Copy-Script.ps1' -Stream Zone.Identifier
+ [!INCLUDE[]()][!INCLUDE[]()][!INCLUDE[]()][!INCLUDE[]()][!INCLUDE[]()]~~
+ CategoryInfo : ObjectNotFound: (C:\Test\Copy-Script.ps1:String) [Get-Item], FileNotFoundE
xception
+ FullyQualifiedErrorId : AlternateDataStreamNotFound,Microsoft.PowerShell.Commands.GetItemCommand
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-Stream der Datei zu entfernen. Schließlich zeigt das Get-Item
Cmdlet an, dass der Zone.Identifier-Stream gelöscht wurde.
Parameter
-Confirm
Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert. Weitere Informationen finden Sie in den folgenden Artikeln:
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Hinweis
Dieser Parameter wird von keinem Anbieter unterstützt, der mit PowerShell installiert ist. Verwenden Sie Invoke-Command, um die Identität eines anderen Benutzers zu annehmen oder Ihre Anmeldeinformationen beim Ausführen dieses Cmdlets zu erhöhen.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
Gibt als Zeichenfolgenarray ein Element oder Elemente an, die von diesem Cmdlet im Vorgang ausgeschlossen werden. Der Wert dieses Parameters qualifiziert den Path-Parameter. 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 C:\Windows\*
. B. , wobei das Feldhalterzeichen den Inhalt des C:\Windows
Verzeichnisses angibt.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Gibt einen Filter an, um den Path-Parameter zu qualifizieren. 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 about_Wildcards. Filter sind effizienter als andere Parameter, da der Anbieter sie anwendet, wenn das Cmdlet die Objekte abruft, anstatt die Objekte nach dem Abrufen von PowerShell filtern zu lassen.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
Erzwingt, dass das Cmdlet Elemente entfernt, die andernfalls nicht geändert werden können, z. B. ausgeblendete oder schreibgeschützte Dateien oder schreibgeschützte Aliase oder Variablen. Mit dem Cmdlet können keine konstanten Aliase oder Variablen entfernt werden. Die Implementierung unterscheidet sich bei den einzelnen Anbietern. Weitere Informationen finden Sie unter about_Providers. Selbst mit dem Force-Parameter kann das Cmdlet keine Sicherheitseinschränkungen außer Kraft setzen.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Include
Gibt als Zeichenfolgenarray ein Element oder Elemente an, die dieses Cmdlet in den Vorgang einschließt. Der Wert dieses Parameters qualifiziert den Path-Parameter. 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 enthält, z C:\Windows\*
. B. , wobei das Feldhalterzeichen den Inhalt des C:\Windows
Verzeichnisses angibt.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-LiteralPath
Gibt einen Pfad zu einem oder mehreren Speicherorten an. Der Wert von LiteralPath wird genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einzelne Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.
Weitere Informationen finden Sie unter about_Quoting_Rules.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
Gibt einen Pfad der zu entfernenden Elemente an. Platzhalterzeichen sind zulässig.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Recurse
Gibt an, dass dieses Cmdlet die Elemente an den angegebenen Speicherorten und in allen untergeordneten Elementen der Speicherorte löscht.
Wenn er mit dem Include-Parameter verwendet wird, löscht der Parameter Recurse möglicherweise nicht alle Unterordner oder alle untergeordneten Elemente. Dieses Problem ist bekannt. Als Problemumgehung versuchen Sie, die Ergebnisse des Get-ChildItem -Recurse
Befehls auf zu Remove-Item
verketten, wie in "Beispiel 4" in diesem Thema beschrieben.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Stream
Der parameter Stream ist ein dynamischer Parameter, den der FileSystem-Anbieter zu Remove-Item
hinzufügt.
Dieser Parameter funktioniert nur in Dateisystemlaufwerken.
Sie können verwenden Remove-Item
, um einen alternativen Datenstrom zu löschen. Es ist jedoch nicht die empfohlene Methode, Sicherheitsüberprüfungen zu deaktivieren, die Dateien blockieren, die aus dem Internet heruntergeladen werden. Wenn Sie überprüfen, ob eine heruntergeladene Datei sicher ist, verwenden Sie das Unblock-File
Cmdlet.
Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-WhatIf
Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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
Das Remove-Item
Cmdlet ist für die Verwendung von Daten konzipiert, die von einem beliebigen Anbieter verfügbar gemacht werden. Geben Sie ein Get-PsProvider
, um die in Ihrer Sitzung verfügbaren Anbieter aufzulisten. Weitere Informationen finden Sie unter about_Providers.
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 -Confirm:$false
unterdrückt die Eingabeaufforderung nicht. Dies ist beabsichtigt.