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

无法通过PowerShell脚本安装MSU格式微软hotfix更新 求助脚本修改方案

MSU更新安装脚本问题修正

原脚本失效原因

你写的脚本存在3个直接导致安装失败的问题:

  • 直接启动.msu文件时,系统默认调用wusa.exe处理安装,但Start-Process默认不会等待安装进程执行完毕就返回,脚本运行后立刻结束,此时安装进程可能还在后台运行,或被系统权限规则直接拦截无任何提示
  • 没有捕获安装进程的退出码,无法判断安装是成功、失败、还是更新已经预装
  • 没有显式指定运行权限和调用宿主,普通用户权限下静默安装系统更新会被系统直接拒绝,不会弹出UAC提示

修正后的生产可用脚本

# 配置MSU更新包完整路径
$msuFilePath = "C:\Installer\windows10.0-kb4520062-x64_9f2a827f11f945d19bd26de6f113f611a38bb8a1.msu"

# 前置校验:文件是否存在
if (-not (Test-Path $msuFilePath -PathType Leaf)) {
    Write-Error "安装终止:指定路径的MSU文件不存在,请检查路径配置"
    exit 1
}

# 显式调用wusa.exe执行安装,等待执行完成并返回进程结果
$installResult = Start-Process -FilePath "wusa.exe" `
    -ArgumentList @("`"$msuFilePath`"", "/quiet", "/norestart") `
    -Wait `
    -PassThru `
    -WindowStyle Hidden

# 匹配wusa标准退出码返回安装状态
switch ($installResult.ExitCode) {
    0 { Write-Host "更新安装完成" }
    3010 { Write-Host "更新安装完成,需要重启系统后生效" }
    2359302 { Write-Host "该更新已在当前系统安装,无需重复部署" }
    -2146498530 { Write-Error "安装失败:更新包不适用于当前系统版本、架构,请核对更新包匹配性" }
    default { Write-Error "安装失败,错误码:$($installResult.ExitCode),可通过事件查看器-Windows日志-Setup排查详细原因" }
}

exit $installResult.ExitCode

使用说明

  • 必须以管理员身份启动PowerShell后再运行该脚本,否则会因权限不足直接安装失败
  • 同时间段不要启动多个wusa安装进程,Windows更新安装服务同一时间仅支持处理一个安装任务
  • 若在Windows Server 2016/Win10 1607及更早版本上wusa调用异常,可替换为DISM命令安装,将上述脚本中启动的文件改为dism.exe,参数替换为@("/online", "/add-package", "/packagepath:"$msuFilePath"", "/quiet", "/norestart")即可,退出码判断逻辑通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:39:27