Remove-Item

刪除指定的項目。

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

Description

Cmdlet Remove-Item 會刪除一或多個專案。 因為許多提供者都支援它,所以可以刪除許多不同類型的專案,包括檔案、資料夾、登錄機碼、變數、別名和函式。

範例

範例 1:刪除副檔名為任何的檔案

本範例會刪除資料夾中名稱包含點 () .C:\Test 的所有檔案。 因為命令會指定點,所以命令不會刪除沒有副檔名的資料夾或檔案。

Remove-Item C:\Test\*.*

範例 2:刪除資料夾中的一些檔檔案

本範例會從目前資料夾中刪除副檔名 .doc 為的所有檔案,以及不包含 *1* 的名稱。

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

它會使用萬用字元 (*) 來指定目前資料夾的內容。 它會使用 IncludeExclude 參數來指定要刪除的檔案。

範例 3:刪除隱藏的唯讀檔案

此命令會刪除 隱藏唯讀的檔案。

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

它會使用 Path 參數來指定檔案。 它會使用 Force 參數來刪除它。 如果沒有 Force,您無法刪除 唯讀隱藏 的檔案。

範例 4:以遞迴方式刪除子資料夾中的檔案

此命令會以遞迴方式刪除目前資料夾和所有子資料夾中的所有 CSV 檔案。

由於 中的 Remove-ItemRecurse參數有已知問題,所以此範例中的命令會使用 Get-ChildItem 來取得所需的檔案,然後使用管線運算子將它們傳遞至 Remove-Item

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

在命令中 Get-ChildItemPath 的值為 (*) ,代表目前資料夾的內容。 它會使用 Include 來指定 CSV 檔案類型,並使用 Recurse 讓擷取遞迴。 如果您嘗試指定路徑的檔案類型,例如 -Path *.csv ,Cmdlet 會將搜尋的主旨解譯為沒有子專案的檔案, 而 Recurse 會失敗。

注意

此行為已在 Windows 1909 版和更新版本中修正。

範例 5:以遞迴方式刪除子機碼

此命令會刪除 「OldApp」 登錄機碼及其所有子機碼和值。 它會使用 Remove-Item 來移除金鑰。 指定路徑,但省略 (Path) 的選擇性參數名稱。

Recurse參數會以遞迴方式刪除 「OldApp」 金鑰的所有內容。 如果金鑰包含子機碼,而且您省略 Recurse 參數,系統會提示您確認您想要刪除金鑰的內容。

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

範例 6:刪除具有特殊字元的檔案

下列範例示範如何刪除包含括弧或括弧等特殊字元的檔案。

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

範例 7:移除替代資料流程

此範例示範如何使用 Cmdlet 的 Remove-ItemStream動態參數來刪除替代資料流程。 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'.

Stream參數 Get-Item 會取得 Zone.Identifier 檔案的 Copy-Script.ps1 資料流程。 Remove-Item 會使用 Stream 參數來移除 Zone.Identifier 檔案的資料流程。 最後, Get-Item Cmdlet 會顯示 Zone.Identifier 資料流程已刪除。

參數

-Confirm

在執行 Cmdlet 前提示您確認。 如需詳細資訊,請參閱下列文章:

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

-Credential

注意

任何隨 PowerShell 一起安裝的提供者都不支援此參數。 若要模擬其他使用者,或在執行此 Cmdlet 時提高您的認證,請使用 Invoke-Command

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

-Exclude

指定此 Cmdlet 在作業中排除的專案或專案,做為字串陣列。 此參數的值會限定 Path 參數。 輸入路徑元素或模式,例如 *.txt。 允許使用萬用字元。 Exclude 參數只有在 命令包含專案的內容時有效,例如 C:\Windows\* ,其中萬用字元會指定目錄的內容 C:\Windows

搭配Exclude使用Recurse時,排除只會篩選目前目錄的結果。 如果有檔案符合子資料夾中的 [排除 ] 模式,則會移除這些檔案及其父目錄。

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

-Filter

指定篩選準則以限定 Path 參數。 FileSystem提供者是唯一支援使用篩選的已安裝 PowerShell 提供者。 您可以在about_Wildcards中找到FileSystem篩選語言的語法。 篩選比其他參數更有效率,因為提供者會在 Cmdlet 取得物件時套用它們,而不是在擷取物件之後讓 PowerShell 篩選物件。

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

-Force

強制 Cmdlet 移除無法變更的專案,例如隱藏或唯讀檔案或唯讀別名或變數。 Cmdlet 無法移除常數別名或變數。 實作會依提供者而異。 如需詳細資訊,請參閱 about_Providers。 即使使用 Force 參數,Cmdlet 也無法覆寫安全性限制。

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

-Include

以字串陣列指定此 Cmdlet 在作業中納入的項目。 此參數的值會限定 Path 參數。 輸入路徑元素或模式,例如 "*.txt"。 允許使用萬用字元。 Include參數只有在命令包含專案的內容時有效,例如 C:\Windows\* ,其中萬用字元會指定目錄的內容 C:\Windows

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

-LiteralPath

指定一個或多個位置的路徑。 LiteralPath的值會完全依照其類型使用。 沒有字元會被視為萬用字元。 如果路徑包含逸出字元,請將它括在單引號中。 單引號會告訴 PowerShell 不要將任何字元解譯為逸出序列。

如需詳細資訊,請參閱 about_Quoting_Rules

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

-Path

指定要移除之專案的路徑。 允許使用萬用字元。

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

-Recurse

指出這個 Cmdlet 會刪除指定位置中的專案,以及位置的所有子專案中的專案。

Recurse參數可能不會刪除所有子資料夾或所有子專案。 這是已知的問題。

注意

此行為已在 Windows 1909 版和更新版本中修正。

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

-Stream

注意

此參數僅適用于 Windows。

Stream參數是 FileSystem 提供者新增至 Remove-Item 的動態參數。 此參數只適用於檔案系統磁碟機。

您可以使用 Remove-Item 來刪除替代資料流程,例如 Zone.Identifier 。 但是,不建議使用這個方法來取代封鎖從網際網路下載之檔案的安全性檢查。 如果您確認下載的檔案安全,請使用 Unblock-File Cmdlet。

此參數是在 Windows PowerShell 3.0 引進。

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

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 Cmdlet 並不會執行。

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

輸入

String

您可以使用管線將包含路徑 (但不是常值路徑) 的字串傳送至此 Cmdlet。

輸出

None

此 Cmdlet 不會傳回任何輸出。

備註

Cmdlet Remove-Item 的設計目的是要處理任何提供者所公開的資料。 若要列出工作階段中可用的提供者,請輸入 Get-PsProvider。 如需詳細資訊,請參閱 about_Providers

當您嘗試刪除包含專案的資料夾而不使用 Recurse 參數時,Cmdlet 會提示確認。 使用 -Confirm:$false 不會隱藏提示。 這是原廠設定。