使用BAT/CMD
脚本,我可以简单地使用"msiexec /i <whatever.msi> /quiet /norestart"
然后检查%errorlevel%
结果。
有了VBScript
,使用Wscript.Shell
对象Run()
方法,我可以得到这样的结果:
"result = oShell.Run("msiexec /i ...", 1, True)"
如何使用 PowerShell 执行此操作?
使用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
仅针对正在运行的本机程序填充,而$?
通常会告诉最后一个命令运行是否成功 - 因此它也将为 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
您还可以使用提供多种功能的 powershell 应用程序部署工具包。
然后你可以使用例如
Execute-MSI -Action 'Install' -Path "$dirFiles\your.msi" -AddParameters "INSTALLFOLDER=C:\$appFolder"