Condividi tramite


Remove-Item

Elimina gli elementi specificati.

Sintassi

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>]

Descrizione

Il Remove-Item cmdlet elimina uno o più elementi. Poiché è supportato da molti provider, può eliminare molti tipi diversi di elementi, tra cui file, cartelle, chiavi del Registro di sistema, variabili, alias e funzioni.

Esempio

Esempio 1: Eliminare file con estensione del nome file

In questo esempio vengono eliminati tutti i file con nomi che includono un punto (.) dalla C:\Test cartella. Poiché il comando specifica un punto, il comando non elimina cartelle o file senza estensione di file.

Remove-Item C:\Test\*.*

Esempio 2: Eliminare alcuni file di documento in una cartella

In questo esempio vengono eliminati dalla cartella corrente tutti i file con estensione .doc nome file e un nome che non include *1*.

Remove-Item * -Include *.doc -Exclude *1*

Usa il carattere jolly (*) per specificare il contenuto della cartella corrente. Usa i parametri Includi ed Escludi per specificare i file da eliminare.

Esempio 3: Eliminare file nascosti, di sola lettura

Questo comando elimina un file nascosto e di sola lettura.

Remove-Item -Path C:\Test\hidden-RO-file.txt -Force

Usa il parametro Path per specificare il file. Usa il parametro Force per eliminarlo. Senza Forza non è possibile eliminare file di sola lettura o nascosti .

Esempio 4: Eliminare i file nelle sottocartelle ricorsive

Questo comando elimina tutti i file CSV nella cartella corrente e tutte le sottocartelle in modo ricorsivo.

Poiché il parametro Recurse in Remove-Item ha un problema noto, il comando in questo esempio usa per ottenere i file desiderati Get-ChildItem e quindi usa l'operatore della pipeline per passarli a Remove-Item.

Get-ChildItem * -Include *.csv -Recurse | Remove-Item

Get-ChildItem Nel comando Path ha un valore (*), che rappresenta il contenuto della cartella corrente. Usa Include per specificare il tipo di file CSV e usa Recurse per rendere ricorsivo il recupero. Se si tenta di specificare il tipo di file, ad esempio -Path *.csv, il cmdlet interpreta l'oggetto della ricerca come file senza elementi figlio e Recurse ha esito negativo.

Nota

Questo comportamento è stato risolto nelle versioni di Windows 1909 e successive.

Esempio 5: Eliminare le sottochiavi in modo ricorsivo

Questo comando elimina la chiave del Registro di sistema "OldApp" e tutte le relative sottochiavi e valori. Usa Remove-Item per rimuovere la chiave. Il percorso viene specificato, ma viene omesso il nome del parametro facoltativo (Percorso).

Il parametro Recurse elimina tutti i contenuti della chiave "OldApp" ricorsivamente. Se la chiave contiene sottochiavi e si omette il parametro Recurse , viene richiesto di confermare che si vuole eliminare il contenuto della chiave.

Remove-Item HKLM:\Software\MyCompany\OldApp -Recurse

Esempio 6: Eliminazione di file con caratteri speciali

Nell'esempio seguente viene illustrato come eliminare i file contenenti caratteri speciali come parentesi quadre o parentesi.

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

Esempio 7: Rimuovere un flusso di dati alternativo

In questo esempio viene illustrato come usare il parametro dinamico Stream del Remove-Item cmdlet per eliminare un flusso di dati alternativo. Il parametro di flusso viene introdotto in Windows PowerShell 3.0.

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

Il parametro Get-ItemStream ottiene il Zone.Identifier flusso del Copy-Script.ps1 file. Remove-Itemusa il parametro Stream per rimuovere il Zone.Identifier flusso del file. Infine, il cmdlet mostra che il Get-ItemZone.Identifier flusso è stato eliminato.

Parametri

-Confirm

Richiede la conferma dell'utente prima di eseguire il cmdlet. Per altre informazioni, vedere gli articoli seguenti:

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

-Credential

Nota

Questo parametro non è supportato da alcun provider installato con PowerShell. Per rappresentare un altro utente o elevare le credenziali durante l'esecuzione di questo cmdlet, usare Invoke-Command.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Exclude

Specifica, come matrice di stringhe, un elemento o un elemento che questo cmdlet esclude nell'operazione. Il valore di questo parametro qualifica il parametro Path. Immettere un elemento o un modello del percorso, ad esempio *.txt. I caratteri jolly sono consentiti. Il parametro Exclude è efficace solo quando il comando include il contenuto di un elemento, ad esempio C:\Windows\*, dove il carattere jolly specifica il contenuto della C:\Windows directory.

Quando si usa Recurse con Exclude, escludere solo i risultati dei filtri della directory corrente. Se sono presenti file che corrispondono al modello Escludi nelle sottocartelle, tali file vengono rimossi insieme alla relativa directory padre.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Filter

Specifica un filtro per qualificare il parametro Path . Il provider FileSystem è l'unico provider di PowerShell installato che supporta l'uso dei filtri. È possibile trovare la sintassi per il linguaggio di filtro FileSystem in about_Wildcards. I filtri sono più efficienti di altri parametri, perché il provider li applica quando il cmdlet ottiene gli oggetti invece di filtrare gli oggetti di PowerShell dopo il recupero.

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

-Force

Forza il cmdlet a rimuovere elementi che altrimenti non possono essere modificati, ad esempio file nascosti o di sola lettura o alias di sola lettura o variabili. Il cmdlet non può rimuovere alias o variabili costanti. L'implementazione varia a seconda del provider. Per altre informazioni, vedere about_Providers. Anche usando il parametro Force , il cmdlet non può eseguire l'override delle restrizioni di sicurezza.

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

-Include

Specifica, come matrice di stringhe, un elemento o un elemento che questo cmdlet include nell'operazione. Il valore di questo parametro qualifica il parametro Path. Immettere un elemento o un modello del percorso, ad esempio "*.txt". I caratteri jolly sono consentiti. Il parametro Include è efficace solo quando il comando include il contenuto di un elemento, ad esempio C:\Windows\*, dove il carattere jolly specifica il contenuto della C:\Windows directory.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

Specifica un percorso di una o più posizioni. Il valore di LiteralPath viene usato esattamente come viene digitato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare i caratteri come sequenze di escape.

Per altre informazioni, vedere about_Quoting_Rules.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

Specifica un percorso degli elementi rimossi. I caratteri jolly sono consentiti.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Recurse

Indica che questo cmdlet elimina gli elementi nelle posizioni specificate e in tutti gli elementi figlio delle posizioni.

Il parametro Recurse potrebbe non eliminare tutte le sottocartelle o tutti gli elementi figlio. Questo è un problema noto

Nota

Questo comportamento è stato risolto nelle versioni di Windows 1909 e versioni successive.

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

-Stream

Nota

Questo parametro è disponibile solo in Windows.

Il parametro Stream è un parametro dinamico che il provider FileSystem aggiunge a Remove-Item. Questo parametro funziona solo nelle unità di file system.

È possibile usare Remove-Item per eliminare un flusso di dati alternativo, ad esempio Zone.Identifier. Tuttavia, non è il metodo consigliato per eliminare i controlli di sicurezza che bloccano i file scaricati da Internet. Se si verifica che un file scaricato sia sicuro, usare il Unblock-File cmdlet.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-WhatIf

Mostra l'esito in caso di esecuzione del cmdlet. Il cmdlet non viene eseguito.

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

Input

String

È possibile inviare una pipe a una stringa contenente un percorso, ma non un percorso letterale, a questo cmdlet.

Output

None

Questo cmdlet non restituisce alcun output.

Note

Il Remove-Item cmdlet è progettato per usare i dati esposti da qualsiasi provider. Per elencare i provider disponibili nella sessione, digitare Get-PsProvider. Per altre informazioni, vedere about_Providers.

Quando si tenta di eliminare una cartella che contiene elementi senza usare il parametro Recurse , il cmdlet richiede la conferma. L'uso -Confirm:$false non elimina il prompt. Questo si verifica per motivi strutturali.