Share via


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 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, einschließlich Dateien, Ordner, Registrierungsschlüssel, Variablen, Aliase und Funktionen.

Beispiele

Beispiel 1: Löschen von Dateien mit einer beliebigen Dateierweiterung

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 Dateierweiterung haben.

Remove-Item C:\Test\*.*

Beispiel 2: Löschen von Dokumentdateien in einem Ordner

In diesem Beispiel werden aus dem aktuellen Ordner alle Dateien gelöscht, die über eine .doc Dateierweiterung 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 im Pfad anzugeben, z -Path *.csv. B. , interpretiert das Cmdlet den Betreff der Suche als Datei ohne untergeordnete Elemente, und Recurse schlägt fehl.

Hinweis

Dieses Verhalten wurde in Windows-Versionen 1909 und höher behoben.

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'.

Der Stream-ParameterGet-Item ruft den Zone.Identifier Datenstrom der Copy-Script.ps1 Datei ab. Remove-Itemverwendet den parameter Stream, um den Zone.Identifier Datenstrom 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

-DeleteKey

Dies ist ein dynamischer Parameter, der vom Zertifikatanbieter zur Verfügung gestellt wird. Der Zertifikatanbieter und dieser Parameter sind nur auf Windows-Plattformen verfügbar.

Wenn es bereitgestellt wird, löscht das Cmdlet den privaten Schlüssel, wenn das Zertifikat gelöscht wird.

Weitere Informationen finden Sie unter about_Certificate_Provider.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
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.

Wenn Sie Recurse mit Exclude verwenden, filtert Exclude nur die Ergebnisse des aktuellen Verzeichnisses. Wenn dateien vorhanden sind, die dem Exclude-Muster in Unterordnern entsprechen, werden diese Dateien zusammen mit dem übergeordneten Verzeichnis entfernt.

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 das Cmdlet, Elemente zu entfernen, die sonst nicht 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 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.

Der Recurse-Parameter löscht möglicherweise nicht alle Unterordner oder alle untergeordneten Elemente. Dieses Problem ist bekannt.

Hinweis

Dieses Verhalten wurde in Windows-Versionen 1909 und höher behoben.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Stream

Dies ist ein dynamischer Parameter, der vom FileSystem-Anbieter zur Verfügung gestellt wird. Dieser Parameter ist nur unter Windows verfügbar. Dieser Parameter kann nicht in Kombination mit dem Recurse-Parameter verwendet werden.

Sie können verwenden Remove-Item , um einen alternativen Datenstrom zu löschen, z Zone.Identifier. B. . 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 Unblock-File Cmdlet.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt. Ab Windows PowerShell Version 7.2 Remove-Item können alternative Datenströme aus Verzeichnissen und Dateien entfernt werden.

Weitere Informationen finden Sie unter about_FileSystem_Provider.

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

String

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
  • Windows:
    • rm
    • rmdir

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.