我希望能够以远程到系统和zip或解压缩文件存在,并有处理信号它何时完成。开始处理工作与-wait参数从PowerShell的同步运行7z.exe。当我尝试结合起来,与调用命令来远程运行相同的命令,它不接受等待参数,我相信这是杀害的过程,因为它很快返回,从来没有产生一个zip文件。

[string]$sevenZip = "C:\Program Files\7-zip\7z.exe"
[Array]$arguments = "a", $zipFilename, $dirToZip;

"Starting $sevenZip with $arguments"
Start-Process $sevenZip "$arguments" -Wait
#blocks and waits for zip file to complete

我最初试图在PSCX写拉链&扩大归档,但后者是不与64位的.NET 4.0配置兼容。所以,现在我想通过命令行来调用64位7z.exe。我没有收到任何错误。 PowerShell的报告作业作为运行状态,然后完整的,并且没有zip文件被产生。

Invoke-Command -ComputerName localhost -FilePath 'C:\Scripts\ZipIt.ps1' -ArgumentList    'd:\TestFolder','d:\promote\TestFile.7z' -AsJob

欣赏任何帮助或指针。

谢谢, 格雷戈里

有帮助吗?

解决方案

由于启动过程将被同步地在此使用,我建议避免它,只是使用7z.exe可执行:

$sevenZip = "C:\Program Files\7-zip\7z.exe"
&$sevenZip a $zipFileName $dirToZip

这样做,直到7zip的完成了工作,自然会阻止你的脚本。

其他提示

使用7z.exe直接将达到目的。如果你发现你需要为解压受密码保护的文件,你可以使用:

$sevenZip = "C:\Program Files\7-zip\7z.exe"
&$sevenZip e -y  "-o$dirToUnZip" -psomepassword $dirToUnZip\$zipFileName 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top