J'ai une liste de packages Windows que j'installez via PowerShell à l'aide de la commande suivante: p>
y a-t-il de toute façon pour que les installations attendent avant de commencer la suivante? P> & mypatch.exe / passif / norestart code> p>
mypatch.exe code> est passé à partir d'une liste et il n'attend pas que l'installation antérieure ait fini - cela continue de continuer. Il construit une vaste fenêtre d'installations en attente d'installation. De plus, je ne peux pas utiliser
$ lastexitCode code> pour déterminer si l'installation a réussi ou échoué. p>
3 Réponses :
Bien sûr, écrivez un script de lots d'une ligne qui exécute l'installateur. Le script de lot attendra que l'installateur ait fini avant de revenir. Appelez le script de PowerShell qui attendra au courant du script de lot. P>
Si vous avez accès à la manière dont Si vous ne le faites pas, vous pouvez également avoir ce script de lot créer un fichier factice lorsque le programme d'installation est terminé. P>
Encore une autre manière, bien que probablement le pire de toutes ces choses est de simplement coder une minuterie de sommeil (Démarrer-Sommeil) une fois que vous appelez l'installateur. P>
Modifier vient de voir la réponse de Jensg. Je ne savais pas à ce sujet. Nice p> myPatch code> est écrit, vous aurez peut-être pu créer un fichier aléatoire lorsqu'il complète que PowerShell peut vérifier son existence dans une boucle de temps et dort simplement pendant que le fichier n'a pas. t existent. P>
Start-Process <path to exe> -Wait
jesng est correct en utilisant start-processus, Cependant, comme la question a montré des arguments de passage, la ligne devrait être la suivante:
try { Start-Process "mypatch.exe" -argumentlist "/passive /norestart" -wait } catch { # Catch will pick up any non zero error code returned # You can do anything you like in this block to deal with the error, examples below: # $_ returns the error details # This will just write the error Write-Host "mypatch.exe returned the following error $_" # If you want to pass the error upwards as a system error and abort your powershell script or function Throw "Aborted mypatch.exe returned $_" }