PowerShell 2.0安装Windows补丁遇弹窗问题求助(已试StackOverflow方案)
针对PowerShell 2.0安装KB3134760补丁的解决方案
嘿,我明白你在PowerShell 2.0里装这个Windows 7 x64补丁时遇到弹窗问题有多头疼——毕竟老系统的补丁安装有时候就是会搞出这些幺蛾子,而且PS2.0本身的功能限制也会添乱。结合你给出的代码,我整理了几个针对性的修复思路,你可以挨个试试:
1. 修正路径参数的传递问题
你的补丁路径里包含空格和括号,PS2.0对这类特殊路径的参数解析很容易出错,必须给路径加上引号;另外注意你代码里$PATH和ArgumentList里的路径不一致(一个指向Person文件夹,一个指向Voss),先统一路径再尝试:
$patchPath = "S:\User\Person\UPDATES\Update for Windows 7 for x64-based Systems (KB3134760)\AMD64-all-windows6.1-kb3134760-x64_d720851ef4b5a37c1c8bdd2e5bf4c77dcc625e8c.msu" # 给路径套转义双引号,同时添加wusa静默参数避免弹窗 Start-Process -FilePath "c:\windows\system32\wusa.exe" -ArgumentList "`"$patchPath`" /quiet /norestart" -Wait -NoNewWindow
这里的/quiet是静默安装参数,/norestart防止安装后自动重启,-Wait让PowerShell等待安装完成再继续,-NoNewWindow避免弹出单独的命令行窗口。
2. 绕过Start-Process,直接调用wusa
PS2.0的Start-Process偶尔会有兼容性问题,你可以试试用调用操作符&直接运行wusa,减少中间层的干扰:
$patchPath = "S:\User\Person\UPDATES\Update for Windows 7 for x64-based Systems (KB3134760)\AMD64-all-windows6.1-kb3134760-x64_d720851ef4b5a37c1c8bdd2e5bf4c77dcc625e8c.msu" & "c:\windows\system32\wusa.exe" "$patchPath" /quiet /norestart
3. 检查补丁的前置依赖
KB3134760是Windows 7的关键前置更新,它本身需要依赖其他补丁才能正常安装,你可以先检查系统是否已安装:
- KB2999226(Universal C Runtime补丁)
- KB3063858(Windows 7更新客户端补丁)
如果没装这些,先手动安装后再执行你的PowerShell脚本。
4. 确保以管理员权限运行PowerShell
Windows补丁安装必须要有管理员权限,如果之前是用普通权限打开的PowerShell,很可能因为权限不足导致弹窗或安装失败。右键点击PowerShell图标,选择「以管理员身份运行」后再执行脚本。
最后可以用这条命令验证补丁是否安装成功:
Get-WmiObject -Class Win32_QuickFixEngineering | Where-Object {$_.HotFixID -eq "KB3134760"}
内容的提问来源于stack exchange,提问作者J0nsan
相关产品推荐
相关产品推荐

