Run MsiExec from PowerShell and get Return Code
I would wrap that up in Start-Process and use the ExitCode property of the resulting process object. For example
(Start-Process -FilePath "msiexec.exe" -ArgumentList "<<whatever>>" -Wait -Passthru).ExitCode
$LastExitCode
or
$?
depending on what you're after. The former is an integer, the latter just a boolean. Furthermore, $LastExitCode
is only populated for native programs being run, while $?
generally tells whether the last command run was successful or not – so it will also be set for cmdlets.
PS Home:\> cmd /c "echo foo"; $?,$LASTEXITCODEfooTrue0PS Home:\> cmd /c "ech foo"; $?,$LASTEXITCODE'ech' is not recognized as an internal or external command,operable program or batch file.False1
You can also use the powershell app deployment kit which provides several things.
Then you can use for example
Execute-MSI -Action 'Install' -Path "$dirFiles\your.msi" -AddParameters "INSTALLFOLDER=C:\$appFolder"