当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Remove-Item (Microsoft.PowerShell.Management)

作者:精品下载站 日期:2024-12-14 02:11:34 浏览:14 分类:玩电脑

Remove-Item (Microsoft.PowerShell.Management)


Remove-Item

模块 :Microsoft.PowerShell.Management

删除指定的项目。

句法

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*

它使用通配符 (*) 来指定当前文件夹的内容。它使用包含排除参数来指定要删除的文件。

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

此命令删除一个隐藏只读的文件。

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

它使用 Path 参数来指定文件。它使用Force参数将其删除。如果没有强制,您将无法删除只读隐藏文件。

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

此命令递归删除当前文件夹及其所有子文件夹中的所有 CSV 文件。

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

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

Get-ChildItem 命令中,Path 的值为 (*),它表示当前文件夹的内容。它使用包含来指定CSV文件类型,并使用递归来进行递归检索。如果您尝试在路径中指定文件类型,例如 -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:删除备用数据流

此示例演示如何使用 Remove-Item cmdlet 的 Stream 动态参数删除备用数据流。流参数是在 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 获取Copy-Script.ps1 文件的Zone.Identifier 流。 Remove-Item 使用Stream 参数删除文件的Zone.Identifier 流。最后,Get-Item cmdlet 显示 Zone.Identifier 流已被删除。

参数

-Confirm

在运行 cmdlet 之前提示您进行确认。有关更多信息,请参阅以下文章:

  • about_Preference_Variables
  • about_Functions_CmdletBindingAttribute
类型 :

SwitchParameter

别名:

cf

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Credential

笔记

随 PowerShell 安装的任何提供程序均不支持此参数。要在运行此 cmdlet 时模拟其他用户或提升您的凭据,请使用 Invoke-Command。

类型 :

PS凭证

位置:

命名

默认值:

当前用户

必需的:

False

接受管道输入:

True

接受通配符:

False

-DeleteKey

这是证书提供商提供的动态参数。 证书提供程序和此参数仅在 Windows 平台上可用。

如果提供,cmdlet 会在删除证书时删除私钥。

有关更多信息,请参阅 about_Certificate_Provider。

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Exclude

以字符串数组形式指定此 cmdlet 在操作中排除的一个或多个项目。此参数的值限定 Path 参数。输入路径元素或模式,例如 *.txt。允许使用通配符。仅当命令包含某个项目的内容时,排除参数才有效,例如C:\Windows\*,其中通配符指定的内容>C:\Windows 目录。

RecurseExclude一起使用时,Exclude仅过滤当前目录的结果。如果子文件夹中存在与排除模式匹配的文件,则这些文件及其父目录将被删除。

类型 :

String[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-Filter

指定一个过滤器来限定 Path 参数。文件系统提供程序是唯一安装的支持使用筛选器的 PowerShell 提供程序。您可以在 about_Wildcards 中找到文件系统过滤器语言的语法。筛选器比其他参数更有效,因为提供程序在 cmdlet 获取对象时应用它们,而不是让 PowerShell 在检索对象后筛选对象。

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-Force

强制 cmdlet 删除无法更改的项目,例如隐藏或只读文件或只读别名或变量。该 cmdlet 无法删除常量别名或变量。实施方式因提供商而异。有关详细信息,请参阅 about_Providers。即使使用 Force 参数,cmdlet 也无法覆盖安全限制。

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Include

以字符串数组形式指定此 cmdlet 在操作中包含的一个或多个项目。此参数的值限定 Path 参数。输入路径元素或模式,例如 "*.txt"。允许使用通配符。仅当命令包含某个项目的内容时,Include 参数才有效,例如 C:\Windows\*,其中通配符指定 的内容>C:\Windows 目录。

类型 :

String[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-LiteralPath

指定到一个或多个位置的路径。 LiteralPath 的值完全按照其键入的方式使用。没有字符被解释为通配符。如果路径包含转义字符,请将其用单引号引起来。单引号告诉 PowerShell 不要将任何字符解释为转义序列。

有关更多信息,请参阅 about_Quoting_Rules。

类型 :

String[]

别名:

PSPath, LP

位置:

命名

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Path

指定要删除的项目的路径。允许使用通配符。

类型 :

String[]

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

True

-Recurse

指示此 cmdlet 删除指定位置及其所有子项目中的项目。

Recurse 参数可能不会删除所有子文件夹或所有子项。这是一个已知问题。

笔记

此行为已在 Windows 版本 1909 及更高版本中修复。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Stream

这是由文件系统提供者提供的动态参数。此参数仅在 Windows 上可用。此参数不能与Recurse参数结合使用。

您可以使用Remove-Item删除替代数据流,例如Zone.Identifier。但是,这并不是消除阻止从 Internet 下载文件的安全检查的推荐方法。如果您验证下载的文件是否安全,请使用 Unblock-File cmdlet。

此参数是在 Windows PowerShell 3.0 中引入的。从 Windows PowerShell 7.2 开始,Remove-Item 可以从目录和文件中删除替代数据流。

有关详细信息,请参阅 about_FileSystem_Provider。

类型 :

String[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-WhatIf

显示 cmdlet 运行时会发生什么情况。该 cmdlet 未运行。

类型 :

SwitchParameter

别名:

wi

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

字符串

您可以通过管道将包含路径(但不是文字路径)的字符串传递到此 cmdlet。

输出

此 cmdlet 不返回任何输出。

笔记

PowerShell 包含以下 Remove-Item 别名:

  • 所有平台:

      del
    erase
    rd
    ri
  • Windows:

      rm
    • rmdir

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

      当您尝试在不使用 Recurse 参数的情况下删除包含项目的文件夹时,cmdlet 会提示您确认。使用 -Confirm:$false 不会抑制提示。这是设计使然。

      您需要 登录账户 后才能发表评论

      取消回复欢迎 发表评论:

      关灯