Frage

Ich möchte in ein System remote können, und zip oder unzip Dateien dort und habe das Prozesssignal, wenn es abgeschlossen ist. Start-Prozess arbeitet mit dem -wait Parameter synchron von Powershell auszuführen 7z.exe. Wenn ich versuche, das kombinieren mit invoke-Befehl remote den gleichen Befehl auszuführen, wird es nicht die Wartezeit Parameter ehren und ich glaube, dass es den Prozess tötet, da es schnell und kehrt niemals wieder erzeugt eine ZIP-Datei.

[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

Ich habe versucht, die ursprünglich den PSCX Schreib-zip & expand-Archiv, aber diese ist nicht kompatibel mit 64-Bit .NET 4.0-Konfiguration. So, jetzt versuche ich 64-Bit-7z.exe über die Befehlszeile aufrufen. Ich erhalte keine Fehler. Powershell meldet den Job als Zustand ausgeführt wird und dann vollständig, und keine ZIP-Datei erzeugt wird.

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

Schätzen Sie Hilfe oder Zeiger.

Danke, Gregory

War es hilfreich?

Lösung

Da Startprozess wird synchron hier verwendet wird, würde ich empfehlen, es zu vermeiden und verwende nur die 7z.exe ausführbar:

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

Dadurch wird so natürlich Ihr Skript blockieren, bis 7zip seinen Auftrag abgeschlossen ist.

Andere Tipps

Mit 7z.exe direkt den Trick tun würde. Wenn Sie Sie müssen unzip ein Passwort geschützte Datei Sie nutzen könnten finden:

$sevenZip = "C:\Program Files\7-zip\7z.exe"
&$sevenZip e -y  "-o$dirToUnZip" -psomepassword $dirToUnZip\$zipFileName 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top