You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell调用Java MSI静默安装并等待执行完成报错问题咨询

报错原因

你之前的Start-Process写法参数结构错误:/QN、TRANSFORMS等是传递给msiexec.exe的运行参数,必须统一归入Start-Process的-ArgumentList参数内,不能直接散写在命令中,否则PowerShell会将这些内容识别为Start-Process本身的参数,自然会抛出「找不到对应位置参数」的异常。
另外直接调用msiexec.exe不会等待安装完成的原因是该程序会直接拉起后台安装子进程,主进程会快速退出,PowerShell默认仅等待主进程执行结束,所以才会直接运行后续代码。

正确实现代码

方案1:数组传参(推荐,路径含空格也不会出错)

# 提前定义路径,后续维护更方便
$installMsi = "C:\MagtekCC\Files\Java\jre1.8.0_144.msi"
$transformFile = "jre1.8.0_144.mst"
$logOutput = "C:\Temp\msilog.log"

Start-Process -FilePath msiexec.exe -ArgumentList @(
    "/i",
    "`"$installMsi`"",
    "/QN",
    "TRANSFORMS=`"$transformFile`"",
    "/L*V",
    "`"$logOutput`""
) -Wait -NoNewWindow

# 后续代码
Write-Host -NoNewLine "Done.`n" -ForegroundColor Cyan
Start-Sleep -s 2

如果运行时提示权限不足,在Start-Process的参数中添加-Verb RunAs即可自动提权运行安装程序。

方案2:字符串传参(简化写法)

Start-Process msiexec.exe -ArgumentList "/i `"C:\MagtekCC\Files\Java\jre1.8.0_144.msi`" /QN TRANSFORMS=`"jre1.8.0_144.mst`" /L*V `"C:\Temp\msilog.log`"" -Wait

Write-Host -NoNewLine "Done.`n" -ForegroundColor Cyan
Start-Sleep -s 2

内容的提问来源于stack exchange,提问作者user14029480

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:24:03