Pergunta

Eu quero ser capaz de controle remoto em um sistema e zip ou descompactar arquivos lá e ter o sinal de processo quando ele é completo. obras Start-processo com o parâmetro -wait para executar 7z.exe síncrona de PowerShell. Quando tento combinar isso com Invoke-Command para executar o mesmo comando remotamente, ele não honrar o parâmetro de espera e eu acredito que é matar o processo, uma vez que retorna rapidamente e nunca produz um arquivo 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

Inicialmente eu tentei o PSCX write-zip e expandir-archive, mas o último não é compatível com a configuração do .NET 4.0 de 64 bits. Então agora eu estou tentando chamar 7z.exe 64 bits através da linha de comando. Não recebo nenhum erro. PowerShell relata o trabalho como executar Estado e, em seguida, completa, e nenhum arquivo zip é produzido.

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

aprecio qualquer ajuda ou ponteiros.

Obrigado, Gregory

Foi útil?

Solução

Desde Iniciar-Process será usado de forma síncrona aqui, eu recomendaria evitar isso e usar apenas o executável 7z.exe:

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

Se o fizer, irá naturalmente bloquear o seu script até 7zip completa o seu trabalho.

Outras dicas

Usando 7z.exe diretamente faria o truque. Se você achar que você precisa unzip um arquivo protegido por senha que você poderia usar:

$sevenZip = "C:\Program Files\7-zip\7z.exe"
&$sevenZip e -y  "-o$dirToUnZip" -psomepassword $dirToUnZip\$zipFileName 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top