2012-11-08 8 views
6

È necessario eseguire una riga di comando MSIEXEC da un PowerShell e verificare se l'installazione è stata eseguita correttamente o meno.Recupero del codice di uscita MSIEXEC in PowerShell

Se lo faccio:

msiexec.exe /qn /l*v e:/tmp/surfaceruntime.log /i '\\nas\lui\tools\surfaceruntime2.msi' 

(dove il MSI specificato non esiste - che è a scopo di test)

ottengo un $LASTEXITCODE di 1

OTOH, se faccio:

[email protected]("/qn", "/l*v", "e:/tmp/surfaceruntime.log";"/i";"\\nas\lui\tools\surfaceruntime2.msi") 

$run=[System.Diagnostics.Process]::Start("msiexec",$parms) 
$run.WaitForExit() 
$run.ExitCode 

ottengo 1619 (lo stesso %ERRORLEVEL% se faccio funzionare l'ordine li ne da CMD).

Come mai $LASTEXITCODE non è corretto?

risposta

7

Prova questo:

(Start-Process -FilePath msiexec.exe -ArgumentList $parms -Wait -Passthru).ExitCode