如何使用 PowerShell 创建受密码保护的 Zip 文件?
最近,我的一位客户要求我创建一个加密的 zip 文件。我尝试过 PowerShell。在本 PowerShell 教程中,我将向您展示如何使用 PowerShell 创建受密码保护的 zip 文件。
要在 PowerShell 中创建受密码保护的 zip 文件,您可以将 Compress-Archive cmdlet 与 7-Zip 等第三方工具结合使用。这是一个示例脚本:
$zipExePath = "C:\Program Files\7-Zip\7z.exe"
$zipFilePath = "C:\MyFolder\PasswordProtectedFile.zip"
$zipPassword = "Dummypassword"
& $zipExePath a -tzip $zipFilePath "C:\MyFolder\*" -p $zipPassword此脚本假定您已安装 7-Zip 并指定其可执行文件的路径。它将目标文件压缩为 zip 存档并使用指定的密码保护它。
方法一:使用7Zip4Powershell模块
在 PowerShell 中创建受密码保护的 zip 文件的最简单方法之一是使用 7Zip4Powershell 模块。该模块通过提供易于使用的 cmdlet 来创建加密存档,从而扩展了 PowerShell 的功能。首先,您需要从 PowerShell 库安装该模块。
Install-Module -Name 7Zip4Powershell安装后,您可以使用密码压缩文件,如下所示:
Compress-7Zip -ArchiveFileName 'secured.zip' -Password 'YourSecurePassword' -Path 'C:\MyFolder\*'
此命令将使用指定的密码创建一个名为“secured.zip”的 zip 文件,包括给定路径中的所有文件。
方法2:使用7z.exe
虽然 PowerShell 本身不支持 zip 文件的密码保护,但您仍然可以创建利用其他工具或应用程序(如 7-Zip)的脚本。下面的脚本演示了如何将 7-Zip 与 PowerShell 结合使用来创建受密码保护的 zip 文件。
首先,确保您的系统上安装了 7-Zip。然后,您可以使用以下脚本:
$zipExePath = "C:\Program Files\7-Zip\7z.exe"
$zipFilePath = "C:\MyFolder\PasswordProtectedFile.zip"
$zipPassword = "Dummypassword"
& $zipExePath a -tzip $zipFilePath "C:\MyFolder\*" -p $zipPassword此脚本设置 7-Zip 可执行文件的路径、要压缩的文件、zip 文件的输出路径和密码。然后它调用 7-Zip 创建存档。
下面的屏幕截图显示了我在本地系统中使用 VS code 执行脚本后的情况。它创建了一个 zip 文件。
方法 3:使用自定义 PowerShell 函数
您还可以编写自定义函数来创建受密码保护的 zip 文件。下面是完整的 PowerShell 脚本的示例。
function Create-PasswordProtectedZip {
param(
[string]$zipExePath,
[string]$filesToZip,
[string]$zipFilePath,
[string]$zipPassword
)
if (Test-Path $zipExePath) {
& $zipExePath a -tzip $zipFilePath $filesToZip -p$zipPassword
} else {
Write-Error "7-Zip executable not found at path: $zipExePath"
}
}
# Usage:
Create-PasswordProtectedZip -zipExePath "C:\Program Files\7-Zip\7z.exe" `
-filesToZip "C:\MyFolder\*" `
-zipFilePath "C:\MyFolder\Output\secured.zip" `
-zipPassword "YourSecurePassword"您可以重复使用上述函数,使用 PowerShell 创建受密码保护的 zip 文件。
结论
在这里,我们学习如何使用 7Zip4Powershell 模块、带有第三方应用程序(如 7z.exe)的本机 cmdlet 在 PowerShell 中创建受密码保护的 zip 文件,或编写自定义函数。
如果您还有任何疑问,请告诉我。
