PowerShell 解压

Migel Hewage Nimesha 2023年1月30日 2022年5月16日
  1. Expand-Archive 语法 1
  2. Expand-Archive 语法 2
  3. Expand-Archive 参数
  4. PowerShell 解压缩文件示例
PowerShell 解压

ZIP 文件类型通过将文件压缩为单个文件来最小化其大小。这种方法可以节省硬盘空间,加密信息,并使彼此交换文件变得简单。

PowerShell 使用 Expand-Archive 命令从 ZIP 文件所在的同一目录或指定目标路径上的特定 Zip 文件中提取文件和文件夹。

在这里,我们可以使用两种不同的语法进行删除。这两个可以单独使用,但不能组合使用。

Expand-Archive 语法 1

这里使用了路径属性,在给出路径时可以使用通配符。

Expand-Archive
      [-Path] <String>
      [[-DestinationPath] <String>]
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Expand-Archive 语法 2

下一个选项是文字路径。这里,给出的路径应该是准确的,因为它被认为是给定的,并且不允许使用通配符。如果路径包含转义字符,请将每个转义字符括在单引号内,以告诉 PowerShell 不应将任何字符解释为转义模式。

Expand-Archive
      -LiteralPath <String>
      [[-DestinationPath] <String>]
      [-Force]
      [-PassThru]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Expand-Archive 参数

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

参数名称 说明
-Confirm 在运行 cmdlet 之前提示确认
-DestinationZip 指定解压缩文件夹的路径。如果文件夹不存在,则创建目标文件夹
-Force 在不确认的情况下强制执行 cmdlet
-LiteralPath 给出存档文件的路径。文字路径值完全按照其给定。
-PassThru 输出从存档扩展的文件列表
-Path 指定归档文件的路径
-WhatIf 显示如果 cmdlet 在没有实际运行的情况下运行会发生什么

PowerShell 解压缩文件示例

示例 1:

当前目录中的当前存档文件的项目被提取到此示例中的 -DestinationPath 选项提供的文件夹中。

Expand-Archive -Path test.Zip -DestinationPath C:\Test

示例 2:

从存档中提取文件比创建文件更容易。你所要做的就是提供存档的名称和解压缩文件的目标位置。使用 Expand-Archive cmdlet,下面的代码将测试 zip 存档的内容导出到目标路径变量中的指定文件夹 TestUnzipped。

Expand-Archive -LiteralPath 'C:\Archives\test[v1].Zip' -DestinationPath C:\TestUnzipped

由于文件名包含可能被解释为通配符的字符,因此使用了 LiteralPath 选项。

如果不使用 -DestinationPath 参数,PowerShell 会将文件解压缩到当前根文件夹中,并使用 Zip 文件的文件名构建一个新文件夹。

当 PowerShell 尝试提取文件时,如果该目录现在存在于目标中,则会引发错误。使用 -Force 参数,你可以推送 PowerShell 以用新数据替换旧数据。

仅当确实不再需要旧文件时才应使用 -Force 参数,因为它将永久覆盖你计算机上的文件。

ZIP 文件将文件和目录压缩并存储到单个文档中。无需安装任何软件,PowerShell 就可以通过各种方法检索它们。上述方法适用于跨平台和原生应用程序。

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.