从 PowerShell 运行 MsiExec 并获取返回代码

发布于 2024-10-01 21:17:12 字数 373 浏览 7 评论 0原文

使用 BAT/CMD 脚本,我可以简单地使用 "msiexec /i/quiet /norestart" 然后检查 %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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

把时间冻结 2024-10-08 21:17:12

我会将其包装在 Start-Process 中,并使用生成的进程对象的 ExitCode 属性。例如

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

I would wrap that up in Start-Process and use the ExitCode property of the resulting process object. For example

(Start-Process -FilePath "msiexec.exe" -ArgumentList "<<whatever>>" -Wait -Passthru).ExitCode
所有深爱都是秘密 2024-10-08 21:17:12
$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
$LastExitCode

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.

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
小糖芽 2024-10-08 21:17:12

您还可以使用 powershell 应用程序部署套件,它提供了多种功能。

然后你可以使用例如

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

信息http://psappdeploytoolkit.com/

You can also use the powershell app deployment kit which provides several things.

Then you can use for example

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

info http://psappdeploytoolkit.com/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文