ZetCode

PowerShell Expand-Archive

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍 PowerShell 中的 Expand-Archive cmdlet。此 cmdlet 用于从压缩的存档文件中提取文件。

存档基础知识

存档是一个包含一个或多个压缩文件的文件,用于节省空间。常见的存档格式包括 ZIP、7ZIP 和 TAR。PowerShell 可以原生处理 ZIP 文件。Expand-Archive cmdlet 从这些存档中提取内容。

Expand-Archive 的基本用法

使用 Expand-Archive 的最简单方法仅需要存档路径和目标。该 cmdlet 将所有文件提取到指定位置。如果目标不存在,它将自动创建。

expand1.ps1
Expand-Archive -Path "C:\archives\data.zip" -DestinationPath "C:\extracted"

此命令将 data.zip 中的所有文件提取到 C:\extracted。目标文件夹将包含存档的内容,并保留原始目录结构。

提取到当前目录

您可以通过省略目标路径将文件提取到当前工作目录。文件将被提取到存档所在的相同位置。这对于在当前文件夹中进行快速提取非常方便。

expand2.ps1
Expand-Archive -Path "project_files.zip"

此命令将 project_files.zip 的内容提取到当前目录。当前位置由 Get-Location cmdlet 显示。

强制覆盖现有文件

默认情况下,Expand-Archive 不会覆盖现有文件。使用 -Force 参数可以覆盖目标中的文件。当您需要确保拥有文件的最新提取版本时,此功能非常有用。

expand3.ps1
Expand-Archive -Path "update.zip" -DestinationPath "C:\app" -Force

此命令在将 update.zip 提取到 C:\app 时覆盖现有文件。请谨慎使用 -Force,因为它会永久替换现有文件。

使用通配符提取特定文件

您可以使用通配符仅提取匹配模式的文件。结合 -Force 参数可以有选择地更新特定文件。当您只需要大型存档中的某些文件时,这很有帮助。

expand4.ps1
Expand-Archive -Path "docs.zip" -DestinationPath "C:\docs" -Force -Include "*.pdf"

此命令仅从 docs.zip 中提取 PDF 文件到 C:\docs。-Include 参数根据模式过滤要提取的文件。

提取时排除特定文件

-Exclude 参数允许您在提取过程中跳过某些文件。当您需要大多数文件但需要省略特定类型或名称的文件时,此功能非常有用。多个模式可以用逗号分隔。

expand5.ps1
Expand-Archive -Path "website.zip" -DestinationPath "C:\web" -Exclude "*.tmp", "thumbs.db"

此命令提取所有文件,但排除临时文件和 thumbs.db。排除的文件不会被提取或覆盖到目标位置。

提取的详细输出

添加 -Verbose 参数可在提取过程中查看详细进度。它会显示从存档中提取的每个文件。详细输出有助于验证提取过程是否正常工作。

expand6.ps1
Expand-Archive -Path "backup.zip" -DestinationPath "C:\restore" -Verbose

此命令会在控制台中显示每个提取的文件。详细输出包含提取过程中的路径和进度信息。

VERBOSE: Performing the operation "Expand-Archive" on target "C:\backup.zip".
VERBOSE: Created 'C:\restore\document1.txt'
VERBOSE: Created 'C:\restore\images\photo1.jpg'
VERBOSE: Created 'C:\restore\data\records.csv'

从网络位置提取

Expand-Archive 使用 UNC 符号处理网络路径。请确保您有权访问存档和目标。网络提取的速度可能会因连接速度而异。

expand7.ps1
Expand-Archive -Path "\\server\share\archive.zip" -DestinationPath "\\nas\department\files"

此命令将文件从网络共享提取到另一个网络位置。两个路径都使用 UNC 格式访问网络资源。

来源

PowerShell 文档

在本文中,我们介绍了 PowerShell 中的 Expand-Archive cmdlet。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。至今,我已发表了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PowerShell 教程