Domanda

Voglio essere in grado di distanza in un sistema e zip o decomprimere i file lì e hanno il segnale di processo quando è completo. lavori di avvio di processo con il parametro -wait di eseguire 7z.exe sincrono da PowerShell. Quando provo a combinano con Invoke-Command per eseguire lo stesso comando a distanza, che non rispetta il parametro di attesa e credo che sta uccidendo il processo in quanto ritorna rapidamente e non produce mai un file 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

Originariamente ho provato il PSCX write-zip ed espandere-archivio, ma quest'ultimo non è compatibile con la configurazione di .NET 4.0 a 64 bit. Così ora sto cercando di chiamare a 64 bit 7z.exe attraverso la linea di comando. Non ricevo errori. PowerShell riporta il lavoro come condizione corrente e quindi completare, e nessun file zip viene prodotto.

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

Apprezzo tutto l'aiuto o suggerimenti.

Grazie, Gregory

È stato utile?

Soluzione

Da start-processo sarà utilizzato in modo sincrono qui, mi sento di raccomandare di evitare e basta usare l'eseguibile 7z.exe:

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

In questo modo, naturalmente, bloccare lo script fino 7zip completa il suo lavoro.

Altri suggerimenti

Utilizzando 7z.exe direttamente farebbe il trucco. Se si scopre che è necessario per unzip di un file protetto da password è possibile utilizzare:

$sevenZip = "C:\Program Files\7-zip\7z.exe"
&$sevenZip e -y  "-o$dirToUnZip" -psomepassword $dirToUnZip\$zipFileName 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top