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

Win2008下用PowerShell 2安装MSI包:让脚本等待安装完成

让PowerShell脚本等待msiexec安装完成并解决参数问题

初始需求

在Windows Server 2008环境中,使用PowerShell 2.0脚本执行以下msiexec命令安装MSI包,脚本可正常运行,但需要实现等待msiexec安装完成后再执行后续指令:

(...)
msiexec.exe /norestart /qn /passive `
        /l*v "$Dir\Install.log" `
        /i "$dirTemp\$msi" `
        INSTALLFOLDER="$Dir"
(...)

尝试Start-Process方案(20220909 更新)

按照建议使用Start-Process命令并添加-Wait参数来实现等待,代码如下:

$Dir = "c:\test"
$dirTemp = $env:TEMP
$msi = "package.msi"
$proxy = "1.2.3.4"
$metadata = "value"

$argList = @('/norestart',
            '/qn',
            '/passive',
            '/l*v',
            "$Dir\Install.log",
            '/i',
            "$dirTemp\$msi",
            "INSTALLFOLDER='$Dir'",
            "LOGFILE='$Dir\Agent.log'",
            "SERVER='$proxy'",
            "BUFFERFILE='$Dir\Agent.db'",
            "METADATA='windows $metadata'")
Start-Process msiexec.exe -ArgumentList "$argList" -Wait -PassThru

但运行后出现问题:Windows Installer启动失败,仅弹出msiexec帮助窗口,指定目录无日志生成。

问题原因与解决方法(20220910 更新)

问题出在带空格的参数值上,msiexec不接受用单引号包裹带空格的参数值,需要将对应参数改为转义双引号包裹:

"METADATA=`"windows $metadata`""

修改后,msiexec就能正确识别带空格的参数值,安装流程可正常执行,同时Start-Process的-Wait参数会让PowerShell等待安装完成后再继续后续指令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:20:27