从 PowerShell 运行 MsiExec 并获取返回代码
使用 BAT/CMD
脚本,我可以简单地使用 "msiexec /i
然后检查 %errorlevel%
以获得结果。
通过 VBScript
,使用 Wscript.Shell
对象 Run()
方法,我可以获得如下结果:
"result = oShell.Run("msiexec /i ...", 1, True)"
How can I do this with PowerShell ?
With BAT/CMD
script I can simply use "msiexec /i <whatever.msi> /quiet /norestart"
and then check %errorlevel%
for the result.
With VBScript
, using the Wscript.Shell
object Run()
method, I can get the result like this:
"result = oShell.Run("msiexec /i ...", 1, True)"
How can I do this with PowerShell?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我会将其包装在 Start-Process 中,并使用生成的进程对象的 ExitCode 属性。例如
I would wrap that up in Start-Process and use the ExitCode property of the resulting process object. For example
或者
取决于你想要什么。前者是一个整数,后者只是一个布尔值。此外,
$LastExitCode
仅针对正在运行的本机程序填充,而$?
通常告知最后一个命令运行是否成功 - 因此它也将为 cmdlet 设置。or
depending on what you're after. The former is an integer, the latter just a boolean. Furthermore,
$LastExitCode
is only populated for native programs being run, while$?
generally tells whether the last command run was successful or not – so it will also be set for cmdlets.您还可以使用 powershell 应用程序部署套件,它提供了多种功能。
然后你可以使用例如
You can also use the powershell app deployment kit which provides several things.
Then you can use for example