Pregunta

Con la escritura BAT/CMD puedo simplemente usar "msiexec /i <whatever.msi> /quiet /norestart" y después comprobar %errorlevel% para el resultado.

Con VBScript, utilizando el método de objeto Wscript.Shell Run(), que puede obtener el resultado como este:

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

¿Cómo puedo hacer esto con PowerShell?

¿Fue útil?

Solución

Me envolvería que en Start-Proceso y utilizar la propiedad ExitCode del procedimiento objeto resultante. Por ejemplo

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

Otros consejos

$LastExitCode

o

$?

dependiendo de lo que está buscando. El primero es un número entero, éste sólo un booleano. Por otra parte, $LastExitCode solamente está poblada por los programas nativos que se está ejecutando, mientras que $? dice generalmente si la última instrucción ejecutada 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

También puede utilizar el kit de implementación de aplicaciones PowerShell que proporciona varias cosas.

A continuación, se puede utilizar, por ejemplo

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

http://psappdeploytoolkit.com/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top