_BAT/CMD
_スクリプトを使用すると、単純に_"msiexec /i <whatever.msi> /quiet /norestart"
_を使用し、_%errorlevel%
_で結果を確認できます。
VBScript
を使用して、_Wscript.Shell
_ object Run()
メソッドを使用すると、次のような結果が得られます。
_"result = oShell.Run("msiexec /i ...", 1, True)"
_
PowerShellでこれを行うにはどうすればよいですか?
これをStart-Processでラップし、結果のプロセスオブジェクトのExitCodeプロパティを使用します。例えば
(Start-Process -FilePath "msiexec.exe" -ArgumentList "<<whatever>>" -Wait -Passthru).ExitCode
$LastExitCode
または
$?
あなたが望んでいるものに応じて。前者は整数で、後者は単なるブール値です。さらに、$LastExitCode
は実行中のネイティブプログラムに対してのみ入力されますが、$?
は通常、最後のコマンドの実行が成功したかどうかを示します。したがって、コマンドレットにも設定されます。
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
また、いくつかの機能を提供するpowershellアプリ展開キットを使用することもできます。
次に、例えばを使用することができます
Execute-MSI -Action 'Install' -Path "$dirFiles\your.msi" -AddParameters "INSTALLFOLDER=C:\$appFolder"