Remove-Item

删除指定项。

语法

Remove-Item
      [-Path] <String[]>
      [-Filter <String>]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-Recurse]
      [-Force]
      [-Credential <PSCredential>]
      [-WhatIf]
      [-Confirm]
      [-UseTransaction]
      [-Stream <String[]>]
      [<CommonParameters>]
Remove-Item
      -LiteralPath <String[]>
      [-Filter <String>]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-Recurse]
      [-Force]
      [-Credential <PSCredential>]
      [-WhatIf]
      [-Confirm]
      [-UseTransaction]
      [-Stream <String[]>]
      [<CommonParameters>]

说明

cmdlet Remove-Item 删除一个或多个项。 由于它受许多提供程序支持,因此它可以删除许多不同类型的项,包括文件、文件夹、注册表项、变量、别名和函数。

示例

示例 1:删除具有任何文件扩展名的文件

此命令将删除名称中包含点 (“的所有文件。从“C:\Test”文件夹中 ) 。 由于命令指定了一个点,因此该命令不会删除没有文件扩展名的文件夹或文件。

Remove-Item C:\Test\*.*

示例 2:删除文件夹中的某些文档文件

此命令从当前文件夹中删除扩展名为“.doc”且名称不包含 1 的所有文件。 它使用通配符 ('*') 来指定当前文件夹的内容。 它使用 IncludeExclude 参数指定要删除的文件。

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

示例 3:删除隐藏的只读文件

此命令删除隐藏和只读的文件。 它使用 Path 参数指定文件。 它使用 Force 参数将其删除。 如果没有 Force,则无法删除 只读隐藏 的文件。

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

示例 4:以递归方式删除子文件夹中的文件

此命令以递归方式删除当前文件夹和所有子文件夹中的所有 CSV 文件。

由于 中的 Remove-ItemRecurse 参数存在已知问题,因此此示例中的命令使用 Get-ChildItem 获取所需文件,然后使用管道运算符将它们传递给 Remove-Item

在 命令中 Get-ChildItemPath 的值为“*”,表示当前文件夹的内容。 它使用 Include 指定 CSV 文件类型,并使用 Recurse 使检索成为递归。

如果尝试指定路径的文件类型,如 -Path *.csv,则 cmdlet 会将搜索主题解释为没有子项的文件,而 Recurse 将失败。

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

示例 5:以递归方式删除子项

此命令删除“OldApp”注册表项及其所有子项和值。 它使用 Remove-Item 删除密钥。 指定了路径,但省略了 路径) (可选参数名称。

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 的 Stream 动态参数Remove-Item删除备用数据流。 流参数是在 Windows PowerShell 3.0 中引入的。

第一个命令使用 cmdlet 的 Stream 动态参数Get-Item获取“Copy-Script.ps1”文件的 Zone.Identifier 流。

第二个命令使用 cmdlet 的 Stream 动态参数Remove-Item删除文件的 Zone.Identifier 流。

第三个命令使用 cmdlet 的 Stream 动态参数Get-Item来验证是否已删除 Zone.Identifier 流。

不带 Stream 参数的第四个命令 Get-Item cmdlet,用于验证文件是否未删除。

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

Get-Item C:\Test\Copy-Script.ps1

Directory: C:\Test

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---          8/4/2011  11:15 AM       9436 Copy-Script.ps1

参数

-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。 允许使用通配符。

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

-Filter

以提供程序的格式或语言指定筛选器。 此参数值使 Path 参数有效。

筛选器的语法(包括通配符字符的使用),具体取决于提供程序。 筛选器比其他参数更有效,因为提供程序在 cmdlet 获取对象时应用它们,而不是在检索对象后让 PowerShell 筛选对象。

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

-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

指定要删除的项。 此参数值使 Path 参数有效。 请输入路径元素或模式,例如“*.txt”。 允许使用通配符。

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

-LiteralPath

指定要移除的项的路径。 与 Path 参数不同,LiteralPath 的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

Type:String[]
Aliases:PSPath
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 删除指定位置和位置的所有子项中的项。

当它与 Include 参数一起使用时, Recurse 参数可能不会删除所有子文件夹或所有子项。 这是已知问题。 作为解决方法,请尝试将 Get-ChildItem -Recurse 命令的结果管道到 Remove-Item,如本主题中的“示例 4”中所述。

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

-Stream

Stream 参数是 FileSystem 提供程序添加到 Remove-Item的动态参数。 此参数仅在文件系统驱动器中有效。

可以使用 Remove-Item 删除备用数据流。 但是,若要取消安全检查(该安全检查可阻止从 Internet 下载的文件),则不建议使用此方法。 如果验证下载的文件是否安全,请使用 Unblock-File cmdlet。

已在 Windows PowerShell 3.0 中引入了此参数。

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

-UseTransaction

在活动事务中使用该命令。 仅当正在执行事务时,此参数才有效。 有关详细信息,请参阅 about_Transactions

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

-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 不返回任何输出。

备注

Remove-Item cmdlet 旨在处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入 Get-PsProvider。 有关详细信息,请参阅 about_Providers