Pregunta

Quiero ser capaz de remoto en un sistema y comprimir o descomprimir archivos allí y tener la señal de proceso cuando se ha completado. las obras de puesta en proceso con el parámetro -wait se ejecuten de forma sincrónica 7z.exe de PowerShell. Cuando trato de combinar eso con invoke-comando para ejecutar el mismo comando a distancia, que no respeta el parámetro de espera y yo creo que está matando el proceso ya que devuelve rápidamente y nunca produce un archivo 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

He intentado originalmente la escritura PSCX-zip y Expand-archivo, pero este último no es compatible con la configuración de .NET 4.0 de 64 bits. Así que ahora estoy tratando de llamar 7z.exe de 64 bits a través de la línea de comandos. No recibo ningún error. PowerShell reporta el trabajo como un estado de ejecución y luego completa, y ningún archivo zip se produce.

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

agradecería cualquier ayuda o punteros.

Gracias, Gregory

¿Fue útil?

Solución

Desde que se utilizará Start-Proceso de forma sincrónica aquí, yo recomendaría evitarlo y sólo tiene que utilizar el ejecutable 7z.exe:

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

Si lo hace, naturalmente, bloquear su guión hasta 7zip completa su trabajo.

Otros consejos

El uso de 7z.exe directamente haría el truco. Si usted encuentra que necesita a descomprimir un archivo protegido con contraseña puede usar:

$sevenZip = "C:\Program Files\7-zip\7z.exe"
&$sevenZip e -y  "-o$dirToUnZip" -psomepassword $dirToUnZip\$zipFileName 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top