在 Windows 10 中,Windows 更新客户端使用事件跟踪,而不是像在以前的 Windows 版本中那样写入文本文件。这会使客户端机器的故障排除变得困难。
Get-WindowsUpdateLog cmdlet 并不总是有效。特别是,当远程运行或目标机器无法直接访问 Internet 时,它似乎无法正常工作。我还看到其他原因不太清楚的问题的报告。
有没有更可靠、更灵活的选择?
在 Windows 10 中,Windows 更新客户端使用事件跟踪,而不是像在以前的 Windows 版本中那样写入文本文件。这会使客户端机器的故障排除变得困难。
Get-WindowsUpdateLog cmdlet 并不总是有效。特别是,当远程运行或目标机器无法直接访问 Internet 时,它似乎无法正常工作。我还看到其他原因不太清楚的问题的报告。
有没有更可靠、更灵活的选择?
从1709开始离线(阅读:无法访问符号服务器)不再是一种责任。您可以从 powershell 中使用。
Get-WindowsUpdateLog
-LogPath .\WindowsUpdate.log
或者,如果您不喜欢这样:
(tracerpt 似乎在某种程度上仅限于创建具有超过 ~4000 个条目的单个日志文件)
这个答案不再有效。应 mirh 的要求 取消删除,因为它可以作为未来研究的参考点。请改用mirh 的答案或我的新答案。
如下所述使用
tracefmt
基于 Microsoft 博客文章,并在我于 2018 年初发布时工作,但在那年晚些时候的某个时候停止工作。它似乎不再起作用,即使对于 Windows 1709 或更高版本也是如此。tracefmt
您可以使用Windows 10 SDK将事件跟踪日志转换为纯文本。首先,将目标计算机上的文件复制
C:\Windows\Logs\WindowsUpdate
到管理计算机上的方便位置。打开命令行窗口,切换到包含跟踪文件副本的目录,然后运行以下命令:
管理员计算机必须安装 Windows 10 SDK 并且需要直接访问 Internet。它不需要运行 Windows 10 本身。
然后,您可能希望将日志组合到一个文件中:
对于 Windows Server 2016 或 Windows 2016 LTSB,这篇 Microsoft 文章介绍了如何在
Get-WindowsUpdateLog
无法访问 Microsoft 符号服务器的计算机上使用该命令。最简单的选择是将 .etl 文件从
C:\Windows\Logs\WindowsUpdate
离线机器复制到您的(在线)管理机器,然后使用该-ETLPath
选项指向Get-WindowsUpdateLog
复制的文件。