Remove-Item
删除指定的项。
语法
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>]
说明
Remove-Item
cmdlet 删除一个或多个项。 由于许多提供程序支持,因此它可以删除许多不同类型的项,包括文件、文件夹、注册表项、变量、别名和函数。
示例
示例 1:删除具有任何文件扩展名的文件
此示例从 .
文件夹中删除名称中包含点(C:\Test
)的所有文件。
由于该命令指定了一个点,因此该命令不会删除没有文件扩展名的文件夹或文件。
Remove-Item C:\Test\*.*
示例 2:删除文件夹中的文档文件
本示例从当前文件夹中删除具有 .doc
文件扩展名和不包含 *1*
的名称的所有文件。
Remove-Item * -Include *.doc -Exclude *1*
它使用通配符(*
)来指定当前文件夹的内容。 它使用 Include 和 Exclude 参数指定要删除的文件。
示例 3:删除隐藏的只读文件
此命令将删除隐藏且为只读的文件。
Remove-Item -Path C:\Test\hidden-RO-file.txt -Force
它使用 Path 参数来指定文件。 它使用 Force 参数将其删除。 如果没有 Force,将无法删除只读或隐藏文件。
示例 4:以递归方式删除子文件夹中的文件
此命令以递归方式删除当前文件夹和所有子文件夹中的所有 CSV 文件。
由于 中的 Remove-Item
参数存在已知问题,因此此示例中的命令使用 Get-ChildItem
获取所需文件,然后使用管道运算符将其传递给 Remove-Item
。
Get-ChildItem * -Include *.csv -Recurse | Remove-Item
在 Get-ChildItem
命令中,Path 具有一个值(*
),表示当前文件夹的内容。 它使用 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-Item
动态参数删除备用数据流。 流参数在 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 之前,提示你进行确认。 有关详细信息,请参阅以下文章:
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Credential
注意
任何随 PowerShell 一起安装的提供程序都不支持此参数。 要模拟其他用户,或在运行此 cmdlet 时提升凭据,请使用 Invoke-Command。
类型: | PSCredential |
Position: | Named |
默认值: | Current user |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-DeleteKey
这是 证书 提供程序提供的动态参数。 证书 提供者和此参数仅在 Windows 平台上可用。
提供后,cmdlet 会在删除证书时删除私钥。
有关详细信息,请参阅 about_Certificate_Provider。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Exclude
以字符串数组的形式指定此 cmdlet 将在操作中排除的项。 此参数值限定了 Path 参数。 输入路径元素或模式,例如 *.txt
。 允许使用通配符。 仅当命令包含项(如 )的内容(其中通配符指定 C:\Windows\*
目录的内容)时,C:\Windows
参数才有效。
将 Recurse 与 Exclude 一起使用时,Exclude 将仅筛选当前目录的结果。 如果存在与子文件夹中 排除 模式匹配的文件,则会删除这些文件及其父目录。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-Filter
指定筛选器以限定 Path 参数。 FileSystem 提供程序是唯一支持使用筛选器的已安装 PowerShell 提供程序。 可以在 about_Wildcards中找到 FileSystem 筛选器语言的语法。 筛选器比其他参数更有效,因为提供程序在 cmdlet 获取对象时应用它们,而不是在检索对象后让 PowerShell 筛选对象。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-Force
强制 cmdlet 删除无法更改的项,例如隐藏或只读文件或只读别名或变量。 cmdlet 无法删除常量别名或变量。 不同提供程序有不同的实现。 有关详细信息,请参阅 about_Providers。 即使使用 Force 参数,cmdlet 也不能替代安全限制。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Include
指定此 cmdlet 将在操作中包含的一个项或多个项(作为一个字符串数组)。 此参数值限定了 Path 参数。 输入路径元素或模式,例如 "*.txt"
。 允许使用通配符。 仅当命令包含某项的内容(例如 ,其中通配符指定 C:\Windows\*
目录的内容)时,C:\Windows
参数才有效。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-LiteralPath
指定一个或多个位置的路径。 LiteralPath 的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包含转义字符,请将它括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。
有关详细信息,请参阅 about_Quoting_Rules。
类型: | String[] |
别名: | PSPath, LP |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Path
指定要删除的项的路径。 允许使用通配符。
类型: | String[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | True |
-Recurse
指示此 cmdlet 删除指定位置和位置的所有子项中的项。
Recurse 参数可能不会删除所有子文件夹或所有子项。 这是一个已知问题。
注意
此行为已在 Windows 版本 1909 及更新版本中修复。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Stream
这是 FileSystem 提供程序提供的动态参数。 此参数仅在 Windows 上可用。 此参数不能与 Recurse 参数结合使用。
可以使用 Remove-Item
删除备用数据流,例如 Zone.Identifier
。
然而,不建议通过取消安全检查来阻止从互联网下载的文件。 如果验证下载的文件是否安全,请使用 Unblock-File
cmdlet。
此参数是在 Windows PowerShell 3.0 中引入的。 从 Windows PowerShell 7.2 起,Remove-Item
可以从目录和文件中删除备用数据流。
有关详细信息,请参阅 about_FileSystem_Provider。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-WhatIf
显示 cmdlet 运行时会发生什么情况。 cmdlet 未运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以通过管道将包含路径(但不是文本路径)的字符串传递给此 cmdlet。
输出
None
此 cmdlet 不返回任何输出。
备注
PowerShell 包含以下 Remove-Item
别名:
- 所有平台:
del
erase
rd
ri
- 窗户:
rm
rmdir
Remove-Item
cmdlet 用于处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入 Get-PsProvider
。 有关详细信息,请参阅 about_Providers。
尝试在不使用 Recurse 参数的情况下删除包含项目的文件夹时,cmdlet 会提示你确认。 使用 -Confirm:$false
不会禁止显示提示。 这是设计造成的。