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

如何在Windows Server 2012中运行Get-WUHistory命令避免卡死

Windows Server 2012 下 Get-WUHistory 命令卡死的解决方案

问题根因

Windows Server 2012 自带PowerShell版本最高为5.1,高版本PSWindowsUpdate模块对该系统的Windows Update Agent(WUA)API适配存在缺陷,查询全量更新历史时会因遍历无效残条、无超时终止逻辑导致进程挂起,无法正常返回提示符。

可用解决方法

  • 限制查询范围,避免全量遍历
    执行命令时指定查询时间范围和最大返回条目数,跳过大量冗余历史记录,大幅降低触发卡死的概率,示例命令:
    Get-WUHistory -MaxDate (Get-Date).AddDays(-90) -Last 50
    上述命令仅查询过去90天内最近50条安装记录,无需遍历全量历史库。
  • 启用旧版API兼容参数
    PSWindowsUpdate模块预留了适配旧系统的-UseOldAPI参数,强制调用Win2012支持的WUA接口执行查询,示例命令:
    Get-WUHistory -UseOldAPI -Last 30
    该参数可和时间范围、条目数量参数组合使用,适配性最优。
  • 降级PSWindowsUpdate到兼容版本
    2.2.0.2是PSWindowsUpdate最后一个完整适配Windows Server 2012的稳定版本,若高版本模块加参数仍无法解决,可卸载高版本后安装指定版本:
    卸载当前所有版本命令:Uninstall-Module -Name PSWindowsUpdate -AllVersions -Force
    安装兼容版本命令:Install-Module -Name PSWindowsUpdate -RequiredVersion 2.2.0.2 -Force
  • 原生COM对象替代查询
    无需依赖第三方模块,直接调用系统原生WUA COM接口查询更新历史,无兼容问题且速度更快,完整命令如下:
    $UpdateSession = New-Object -ComObject Microsoft.Update.Session
    $HistoryCount = $UpdateSession.GetTotalHistoryCount()
    $UpdateHistory = $UpdateSession.QueryHistory("",0,$HistoryCount)
    $UpdateHistory | Select-Object Title,Date,ResultCode | Format-Table -AutoSize
    

注意事项

所有涉及Windows Update的查询操作都需要使用管理员身份启动PowerShell执行,否则会出现权限不足导致的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:15:03