PowerShell 删除文件夹

Migel Hewage Nimesha 2023年1月30日
  1. 在 PowerShell 中使用 Remove-item Cmdlet 删除文件夹
  2. 在 PowerShell 中使用命令提示符删除文件夹
  3. 在 PowerShell 中使用 FileSystem 对象方法删除文件夹
  4. 在 PowerShell 中使用 .Net 类删除文件夹
PowerShell 删除文件夹

PowerShell 中的文件夹删除操作会从给定位置删除文件夹,无论它是本地路径还是共享路径。

本文重点介绍使用 PowerShell 删除文件夹的不同方法。

在 PowerShell 中使用 Remove-item Cmdlet 删除文件夹

可以使用 Remove-Item cmdlet 删除一个或多个对象。

我们可以使用两种不同的语法进行删除。但需要注意的是,这两者可以单独使用,但不能组合使用。

  • 语法 1
Remove-Item
      [-Path] <String[]>
      [-Filter <String>]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-Recurse]
      [-Force]
      [-Credential <PSCredential>]
      [-WhatIf]
      [-Confirm]
      [-Stream <String[]>]
      [<CommonParameters>]
  • 语法 2
Remove-Item
      -LiteralPath <String[]>
      [-Filter <String>]
      [-Include <String[]>]
      [-Exclude <String[]>]
      [-Recurse]
      [-Force]
      [-Credential <PSCredential>]
      [-WhatIf]
      [-Confirm]
      [-Stream <String[]>]
      [<CommonParameters>]

-Path-Literalpath 不能在相同的语法中使用。

Remove-item 参数

下面给出了最常用参数的名称和描述。

名称 说明
-Path 指定要移除的东西的位置。通配符的使用没有限制。
-LiteralPath 指定到一个或多个位置的路径
-Confirm 运行 cmdlet 前会提示确认
-Exclude cmdlet 在操作期间排除的项目
-Credential 任何 PowerShell 安装的提供程序都不支持此参数。在使用此 cmdlet 时,使用 Invoke-Command 模拟其他用户或提升你的权限。
-Filter 过滤以验证路径参数
-Force 强制删除无法以其他方式修改的对象,例如私有或只读文件/别名或变量。
-Include cmdlet 在操作期间包含的项目
-Recurse 此 cmdlet 丢弃给定位置中的对象以及所有位置的子项。
-Stream Stream 参数是由 FileSystem 提供程序添加到 Remove-Item 的动态参数。此设置仅适用于具有文件系统的驱动器。
-WhatIf 显示执行 cmdlet 时会发生什么。

让我们看一些示例以及不同的语法用法,

示例 1:

在这里,我们将使用下面提到的命令删除 test1 文件夹,最后,你可以看到该文件夹​​将被删除。

Remove-Item 'D:\temp\Test1'

示例 2:

我们将递归删除文件夹 test2。PowerShell 在前面的示例中检查目录是否为空。在这种情况下,它只会删除该文件夹。

Remove-Item 'D:\temp\test2' -Recurse

示例 3:在 -RemoveItem 中使用 -LiteralPath

-LiteralPath-Force-Recurse 参数一起使用。因此,它会在没有任何确认提示的情况下强制删除项目以及给定路径中的文件夹。

Remove-Item -LiteralPath "foldertodelete" -Force -Recurse

示例 4:Remove-item 作为管道

我们首先使用 Get-ChildItem 来检索文件夹和文件,然后我们使用 Remove-Item 来管道上一个命令的结果。

Get-ChildItem C:\Temp\TestFolder\ | Remove-Item -Recurse -Force -Verbose

这里唯一的问题是它只删除文件夹的内容,而不是文件夹本身;因此,必须添加其他代码片段才能删除该文件夹。

在 PowerShell 中使用命令提示符删除文件夹

大多数命令行用户将使用 rmdir 命令来删除或删除文件夹。语法是 rmdir 以及文件夹路径,如下所示。

rmdir C:\Temp\TestFolder

在 PowerShell 中使用 FileSystem 对象方法删除文件夹

PowerShell 中提供了用于删除文件夹的不同选项。其中之一是文件系统对象方法。此过程有两个阶段。第一步,我们将构造一个文件系统对象;接下来,在第二步中,我们将使用 DeleteFolder() 函数来销毁关联对象的文件夹。

所以要做到这一点,首先创建一个 test.ps1 文件,然后添加下面给出的以下命令。

$object = New-Object -ComObject Scripting.FileSystemObject
$object.DeleteFolder("C:\Temp\TestFolder")

最后,执行 test.ps1 文件,它将删除我们想要的文件夹。

在 PowerShell 中使用 .Net 类删除文件夹

在 PowerShell 中,.NET 框架使用 System.IO.Directory 类和 Delete() 方法来删​​除文件夹。如果提供的文件夹不为空,此操作将抛出异常:

&gt [System.IO.Directory]::Delete("C:\Temp\TestFolder")

要删除此非空文件夹,请使用 Delete() 函数中的 $true 选项:

System.IO.Directory]::Delete("C:\Temp\TestFolder", $true)
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

相关文章 - PowerShell Directory