如何通过PowerShell远程执行本地脚本安装Windows更新且不显示进度条
问题根因
远程会话中PowerShell默认会将远端执行产生的进度流回传到本地发起端,本地主机收到进度流后会自动渲染为进度弹窗,这是内置的交互逻辑,和更新安装本身的执行无关。
修复方案
可以任选以下一种方案操作,也可以组合使用实现双重保险:
- 方案1:调整远程调用配置,禁用进度流回传
执行Invoke-Command前先在本地设置进度偏好为静默,同时在远端执行脚本前也添加相同配置,拦截进度流的产生和回传,修改后的调用代码如下:# 本地侧先禁用进度条渲染 $ProgressPreference = 'SilentlyContinue' Invoke-Command -ComputerName $All -Credential $Cred1 -ArgumentList $Text -ErrorAction Stop -ScriptBlock { # 远端侧禁用进度流输出 $ProgressPreference = 'SilentlyContinue' & "C:\Users\$($args[0])\Documents\Powershell\WindowsUpdate\InstallWU.ps1" -ArgumentList "--quiet" -Verb runas } - 方案2:修改远端更新命令参数,直接禁止输出进度
Get-WindowsUpdate原生支持-Quiet参数,开启后不会产生任何进度输出,也不会影响安装逻辑,修改后的远端核心代码如下:
如果你需要留存安装记录方便后续排查,可追加日志输出配置:Get-WindowsUpdate -Install -AcceptAll -IgnoreReboot -QuietGet-WindowsUpdate -Install -AcceptAll -IgnoreReboot -Quiet | Out-File -FilePath C:\Windows\Temp\WindowsUpdate_Install.log -Append
效果验证
修改后执行远程调用不会再弹出进度提示,更新安装逻辑和原有逻辑完全一致,不会影响安装成功率。你可以登录远端服务器查看系统更新记录或者自行输出的日志文件确认安装结果。
内容的提问来源于stack exchange,提问作者jsonpowerhouse123
相关产品推荐
相关产品推荐

