Question

Je veux être en mesure de distance dans un système et des fichiers ZIP ou dézipper là-bas et que le signal de processus quand il est terminé. travaux de démarrage processus avec le paramètre -wait pour exécuter 7z.exe de manière synchrone PowerShell. Lorsque je tente de combiner avec Invoke-commande pour exécuter la même commande à distance, il ne respecte pas le paramètre d'attente et je crois qu'il est en train de tuer le processus car il retourne produit rapidement et jamais un fichier 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

J'ai d'abord essayé le PSCX écriture zip et expand-archives, mais ce dernier n'est pas compatible avec la configuration .NET 4.0 64 bits. Alors maintenant, je suis en train d'appeler 7z.exe 64 bits via la ligne de commande. Je ne reçois pas d'erreurs. PowerShell signale le travail en cours d'exécution, puis l'état complet, et aucun fichier zip est produit.

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

apprécierais toute aide ou pointeurs.

Merci, Gregory

Était-ce utile?

La solution

depuis le démarrage processus sera utilisé de manière synchrone ici, je vous conseille d'éviter et il suffit d'utiliser l'exécutable 7z.exe:

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

Cela va bloquer naturellement votre script jusqu'à ce que 7zip termine sa tâche.

Autres conseils

Utilisation 7z.exe serait directement faire l'affaire. Si vous vous trouvez besoin Décompressez un fichier protégé par mot, vous pouvez utiliser:

$sevenZip = "C:\Program Files\7-zip\7z.exe"
&$sevenZip e -y  "-o$dirToUnZip" -psomepassword $dirToUnZip\$zipFileName 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top