Question

Avec script BAT/CMD je peux simplement utiliser "msiexec /i <whatever.msi> /quiet /norestart" puis vérifiez %errorlevel% le résultat.

Avec VBScript, en utilisant la méthode objet Wscript.Shell de Run(), je peux obtenir le résultat comme ceci:

"result = oShell.Run("msiexec /i ...", 1, True)"

Comment puis-je faire avec PowerShell?

Était-ce utile?

La solution

J'envelopperait que dans Start-Process et utiliser la propriété ExitCode de l'objet de processus résultant. Par exemple

(Start-Process -FilePath "msiexec.exe" -ArgumentList "<<whatever>>" -Wait -Passthru).ExitCode

Autres conseils

$LastExitCode

ou

$?

en fonction de ce que vous êtes après. Le premier est un nombre entier, ce dernier seulement une valeur booléenne. En outre, $LastExitCode est peuplé que pour les programmes natifs en cours d'exécution, alors que $? indique généralement que la dernière exécution de la commande a réussi ou non -. Il sera également réglé pour cmdlets

PS Home:\> cmd /c "echo foo"; $?,$LASTEXITCODE
foo
True
0
PS Home:\> cmd /c "ech foo"; $?,$LASTEXITCODE
'ech' is not recognized as an internal or external command,
operable program or batch file.
False
1

Vous pouvez également utiliser le kit de déploiement d'applications powershell qui fournit plusieurs choses.

Ensuite, vous pouvez utiliser par exemple

Execute-MSI -Action 'Install' -Path "$dirFiles\your.msi" -AddParameters "INSTALLFOLDER=C:\$appFolder"
  

http://psappdeploytoolkit.com/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top