Windows 更新日志文件

下表介绍了 Windows 更新创建的日志文件。

日志文件 位置 描述 使用时间
windowsupdate.log C:\Windows\Logs\WindowsUpdate 从 Windows 8.1 开始一直到 Windows 10,Windows 更新客户端使用 Windows 事件跟踪 (ETW) 来生成诊断日志。 如果在运行 Windows 更新 时收到错误消息,则可以使用Windowsupdate.log日志文件中包含的信息来排查问题。
UpdateSessionOrchestration.etl C:\ProgramData\USOShared\Logs 从Windows 10开始,更新 Orchestrator 服务负责从Windows 更新下载和安装各种更新类型的顺序。 还会将事件记录到这些 etl 文件中。
  • 当你看到更新可用但下载未触发时。
  • 下载更新但未触发安装时。
  • 安装更新但未触发重新启动时。
NotificationUxBroker.etl C:\ProgramData\USOShared\Logs 启动 Windows 10 时,NotificationUxBroker.exe 触发通知吐司或横幅。 当你想要检查通知是否已触发时。
CBS.log %systemroot%\Logs\CBS 此日志提供对服务堆栈中的更新安装部分的见解。 对与 Windows 更新安装相关的问题进行故障排除。

生成 WindowsUpdate.log

若要将 Windows 更新跟踪文件(.etl 文件)合并并转换到一个可读的 WindowsUpdate.log 文件中,请参阅 Get-WindowsUpdateLog

注意

运行 Get-WindowsUpdateLog cmdlet 时,会创建 WindowsUpdate.log 文件的副本作为静态日志文件。 它不会作为旧的 WindowsUpate.log 进行更新,除非再次运行 Get-WindowsUpdateLog

Windows 更新日志组件

Windows 更新引擎具有不同的组件名称。 下面是 WindowsUpdate.log 文件中出现的一些最常见的组件:

  • AGENT - Windows 更新代理
  • AU - 自动更新正在执行此任务
  • AUCLNT - AU 与已登录用户之间的交互
  • CDM - 设备管理器
  • CMPRESS - 压缩代理
  • COMAPI - Windows 更新 API
  • DRIVER - 设备驱动程序信息
  • DTASTOR - 处理数据库事务
  • EEHNDLER - 用于评估更新适用性的表达式处理程序
  • HANDLER - 管理更新安装程序
  • MISC - 常规服务信息
  • OFFLSNC - 在无网络连接的情况下检测可用的更新
  • PARSER - 分析表达式信息
  • PT - 将更新信息同步到本地数据存储
  • REPORT - 收集报告信息
  • SERVICE - 启动/关闭自动更新服务
  • 安装程序 - 安装新版本的 Windows 更新 客户端(如果可用)
  • SHUTDWN - 关机时安装功能
  • WUREDIR - Windows 更新重定向程序文件
  • WUWEB - Windows 更新 ActiveX 控件
  • ProtocolTalker - 客户端-服务器同步
  • DownloadManager - 创建和监视有效负载下载
  • 处理程序、安装程序 - 安装程序处理程序 (CBS 等)
  • EEHandler - 评估更新适用性规则
  • DataStore - 在本地缓存更新数据
  • IdleTimer - 跟踪活动调用,停止服务

注意

查找特定区域中的问题时,许多组件日志消息非常有用。 但是,如果不通过筛选排除不相关的组件(以便可以专注于重要的内容),这些消息可能毫无用处。

Windows 更新日志结构

Windows 更新日志结构分为四个主要标识:

  • 时间戳
  • 进程 ID 和线程 ID
  • 组件名称
  • 更新标识符
    • 更新 ID 和修订号
    • 修订 ID
    • 本地 ID
    • 不一致的术语

以下各部分将讨论 WindowsUpdate.log 的结构。

时间戳

时间戳表示发生日志记录的时间。

  • 消息通常按时间顺序排列,但可能存在例外情况。
  • 同步过程中的暂停可能表示有网络问题,即使扫描成功也是如此。
  • 靠近扫描结束时的长停顿可能表示有取代链问题。
    Windows 更新时间戳。

进程 ID 和线程 ID

进程 ID 和线程 ID 是随机的,可能因日志而异,甚至在同一日志中因服务会话而已。

  • 前四位数字(以十六进制为单位)是进程 ID。
  • 接下来的四位数字(以十六进制为单位)是线程 ID。
  • 每个组件(如 USO、Windows 更新引擎、COM API 调用程序和 Windows 更新安装程序处理程序)都具有其自己的进程 ID。
    Windows 更新进程和线程 ID。

组件名称

请搜索并识别与 ID 相关联的组件。 Windows 更新引擎的不同部分具有不同的组件名称。 一些组件如下:

  • ProtocolTalker - 客户端-服务器同步
  • DownloadManager - 创建和监视有效负载下载
  • Handler、Setup - 安装程序处理程序(CBS 等)
  • EEHandler - 评估更新适用性规则
  • DataStore - 在本地缓存更新数据
  • IdleTimer - 跟踪活动调用,停止服务

Windows 更新组件名称。

更新标识符

以下项是更新标识符:

更新 ID 和修订号

同一更新在不同上下文中有不同的标识符。 了解标识符的模式非常重要。

  • 更新 ID:上一屏幕截图中指示的 GUID (,) 发布时分配给给定更新
  • 修订号:每次在服务中修改和重新发布给定更新(具有给定更新 ID)时都会递增的数字
  • 不同更新(不是唯一的标识符)之间可重用修订号。
  • 更新 ID 和修订号通常一起显示为“{GUID}.revision”。Windows 更新更新标识符。

修订 ID

  • 修订 ID (不会将此值与“修订号”混淆,) 是最初在给定服务上发布或修改更新时颁发的序列号。
  • 修订的现有更新保留相同的更新 ID (GUID) ,其修订号 (例如从 100 增加到 101) ,但获取与以前的 ID 无关的新修订 ID。
  • 修订 ID 对于给定的更新源是唯一的,但在多个源之间并不唯一。
  • 同一更新修订版本在 Windows 更新和 WSUS 上可能具有不同的修订 ID。
  • 同一修订 ID 可能表示 Windows 更新和 WSUS 上的不同更新。

本地 ID

  • 本地 ID 是从服务接收更新时由给定Windows 更新客户端颁发的序列号。
  • 通常在调试日志中看到,尤其在涉及本地缓存以获取更新信息(数据存储)时
  • 不同的客户端电脑将不同的本地 ID 分配给同一更新
  • 可通过获取客户端的 %WINDIR%\SoftwareDistribution\Datastore\Datastore.edb 文件来查找客户端所使用的本地 ID

不一致的术语

  • 有时,日志会使用不一致的术语。 例如,InstalledNonLeafUpdateIDs 列表实际上包含修订 ID,而不是更新 ID。

  • 按窗体和上下文识别 ID:

    • GUID 是更新 ID
    • 更新 ID 旁显示的小整数是修订号
    • 大整数通常是修订 ID
    • 小整数 (特别是在数据存储) 可以是本地 ID,Windows 更新不一定术语。

使用 SetupDiag 工具分析 Windows 安装程序日志文件

SetupDiag 是一种诊断工具,可用于分析与 Windows 更新安装有关的日志。 有关详细信息,请参阅 SetupDiag