使用BAT/CMD
脚本,我只需使用"msiexec /i <whatever.msi> /quiet /norestart"
,然后检查%errorlevel%
的结果。
VBScript
使用Wscript.Shell
对象Run()
方法,我可以得到如下结果:
"result = oShell.Run("msiexec /i ...", 1, True)"
如何使用PowerShell执行此操作?
答案 0 :(得分:49)
我会在Start-Process中将其包装起来并使用生成的流程对象的ExitCode属性。例如
(Start-Process -FilePath "msiexec.exe" -ArgumentList "<<whatever>>" -Wait -Passthru).ExitCode
答案 1 :(得分:18)
$LastExitCode
或
$?
取决于你所追求的。前者是整数,后者只是一个布尔值。此外,$LastExitCode
仅填充正在运行的本机程序,而$?
通常会告知最后一个命令是否成功运行 - 因此它也将设置为cmdlet。
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
答案 2 :(得分:0)
您还可以使用提供一些功能的Powershell应用程序部署工具包。
然后您可以使用
Execute-MSI -Action 'Install' -Path "$dirFiles\your.msi" -AddParameters "INSTALLFOLDER=C:\$appFolder"