Exécutez MsiExec de PowerShell et obtenir des codes de retour
-
29-09-2019 - |
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?
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"