Salt Master执行win_wua命令查询Windows更新报错,寻求技术协助
解决Salt win_wua模块报错(-2147352567, -2145107934)的问题
我之前处理过类似的Salt win_wua模块报错问题,结合你提到的用Minion2协助排查的要求,咱们一步步来解决这个问题:
1. 先用Minion2验证win_wua模块的可用性
首先确认不是Salt模块本身的问题,在Salt Master上针对Minion2运行相同的命令:
salt 'minion2' win_wua.available salt 'minion2' win_wua.list_updates
如果Minion2能正常返回可用更新列表,说明问题出在目标实例XXXXXXXX01本身,而非Salt的win_wua模块。
2. 对比Minion2和目标实例的Windows Update服务状态
接下来检查目标实例的Windows Update相关服务是否正常运行,同时和Minion2的状态做对比:
# 检查目标实例的服务状态 salt 'XXXXXXXX01' service.list wuauserv,cryptSvc,bits,msiserver # 检查Minion2的服务状态做参照 salt 'minion2' service.list wuauserv,cryptSvc,bits,msiserver
如果目标实例中有服务未运行,先启动对应的服务:
salt 'XXXXXXXX01' service.start wuauserv salt 'XXXXXXXX01' service.start cryptSvc salt 'XXXXXXXX01' service.start bits salt 'XXXXXXXX01' service.start msiserver
启动后再次测试win_wua命令,看是否恢复正常。
3. 修复目标实例的Windows Update组件完整性
报错码-2145107934通常和Windows Update组件损坏有关,咱们先修复组件:
# 运行DISM修复系统镜像 salt 'XXXXXXXX01' cmd.run 'DISM /Online /Cleanup-Image /RestoreHealth' # 运行SFC扫描修复系统文件 salt 'XXXXXXXX01' cmd.run 'sfc /scannow'
如果Minion2和目标实例在同一网络环境,也可以参考Minion2的正常组件状态,确保修复源可用。修复完成后重启目标实例的Salt Minion服务,再测试win_wua命令。
4. 验证目标实例的Salt Minion服务权限
win_wua模块需要较高权限访问Windows Update服务,确保目标实例的Salt Minion服务是用本地系统账户运行的:
# 查看目标实例的Salt Minion服务运行账户 salt 'XXXXXXXX01' service.info 'Salt Minion' | grep -i 'runas' # 对比Minion2的配置 salt 'minion2' service.info 'Salt Minion' | grep -i 'runas'
如果目标实例的服务账户不是本地系统,修改为本地系统账户后重启Salt Minion服务:
salt 'XXXXXXXX01' service.modify 'Salt Minion' obj=LocalSystem salt 'XXXXXXXX01' service.restart 'Salt Minion'
5. 重置Windows Update组件(终极方案)
如果前面的步骤都没用,咱们重置Windows Update的核心组件:
# 停止相关服务 salt 'XXXXXXXX01' service.stop wuauserv salt 'XXXXXXXX01' service.stop cryptSvc salt 'XXXXXXXX01' service.stop bits salt 'XXXXXXXX01' service.stop msiserver # 重命名缓存文件夹 salt 'XXXXXXXX01' cmd.run 'ren C:\Windows\SoftwareDistribution SoftwareDistribution.old' salt 'XXXXXXXX01' cmd.run 'ren C:\Windows\System32\catroot2 Catroot2.old' # 重启服务 salt 'XXXXXXXX01' service.start wuauserv salt 'XXXXXXXX01' service.start cryptSvc salt 'XXXXXXXX01' service.start bits salt 'XXXXXXXX01' service.start msiserver
重置完成后,等待5-10分钟让Windows Update重新初始化,再运行win_wua.available命令测试。
内容的提问来源于stack exchange,提问作者Prashanth Goud B
相关产品推荐
相关产品推荐

