我正在尝试编写一个 PowerShell 脚本,它将使用 7zip 单独压缩并加密文件。
$Password = Read-Host -Prompt 'Enter Password:'
dir *.txt | ForEach-Object -Parallel { & 7z a -t7z -mm=LZMA2 -mx=9 -md=1024m -mfb=273 -ms=64g -myx=9 -mmt=32 -p$Password ($_.BaseName+".7z") $_.Name }
这在压缩阶段有效,但压缩文件无法使用加密密码解密和提取。解压缩期间的 GUI 输出如下。
Data error : Wrong password? test.txt
如果我在压缩过程中使用 GUI,则不会出现此错误。如能得到任何帮助,我将不胜感激。
答案1
Powershell 将其-p$Password
视为参数名称,并且不会扩展。请在和$
之间添加空格,或使用带引号的参数列表代替/ :-p
$Password
Start-Process
Call
&
Start-Process 'C:\Program Files\7-Zip\7z.exe' -ArgumentList `
"a -t7z -mm=LZMA2 -mx=9 -md=1024m -mfb=273 -ms=64g -myx=9 -mmt=32 -p$Password $($_.BaseName+".7z") $($_.Name)"
我用我的 7zip 测试了它,它能够正确使用密码。