質問

BAT/CMD スクリプトは単に使用できます "msiexec /i <whatever.msi> /quiet /norestart" そして、チェックします %errorlevel% 結果のために。

VBScript, 、を使用します Wscript.Shell 物体 Run() 方法、私は次のような結果を得ることができます:

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

PowerShellでこれを行うにはどうすればよいですか?

役に立ちましたか?

解決

Start-Processでそれをまとめて、結果のプロセスオブジェクトのExitCodeプロパティを使用します。例えば

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

他のヒント

$LastExitCode

また

$?

あなたが何を求めているのかによって異なります。前者は整数であり、後者はただのブール値です。さらに、 $LastExitCode ネイティブプログラムが実行されるためにのみ入力されますが、 $? 一般に、最後のコマンドランが成功したかどうかを示します。そのため、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

また、いくつかのことを提供するPowerShellアプリ展開キットを使用することもできます。

その後、たとえば使用できます

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

情報 http://psappdeploytoolkit.com/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top