help - Ejecute MsiExec desde PowerShell y obtenga el código de retorno
obtener ayuda de un comando powershell (2)
Con el script BAT/CMD
, simplemente puedo usar "msiexec /i <whatever.msi> /quiet /norestart"
y luego verificar %errorlevel%
para el resultado.
Con VBScript
, usando el Wscript.Shell
Run()
objeto Wscript.Shell
, puedo obtener el resultado de esta manera:
"result = oShell.Run("msiexec /i ...", 1, True)"
¿Cómo puedo hacer esto con PowerShell?
Lo resumiría en Start-Process y usaría la propiedad ExitCode del objeto de proceso resultante. Por ejemplo
(Start-Process -FilePath "msiexec.exe" -ArgumentList "<<whatever>>" -Wait -Passthru).ExitCode
$LastExitCode
o
$?
dependiendo de lo que estás buscando El primero es un número entero, el último solo un booleano. Además, $LastExitCode
solo se llena para los programas nativos que se ejecutan, mientras que $?
generalmente indica si la ejecución del último comando fue exitosa o no, por lo que también se establecerá para 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