如何将 Windows 更新客户端日志转换为纯文本?

如何将 Windows 更新客户端日志转换为纯文本?

在 Windows 10 中,Windows 更新客户端使用事件跟踪,而不是像以前版本的 Windows 那样写入文本文件。这可能会使客户端计算机的故障排除变得困难。

Get-WindowsUpdateLog cmdlet 并不总是有效。特别是,当远程运行或目标计算机没有直接互联网访问时,它似乎无法正常工作。我还看到了其他问题的报告,这些问题的原因不太清楚。

有没有更可靠、更灵活的选择?

答案1

从...开始1709离线(即无法访问符号服务器)不再是一种负担。你可以直接使用Get-WindowsUpdateLog-LogPath .\WindowsUpdate.log来自 powershell。

或者,如果你不喜欢这样:

FOR %i IN (C:\Windows\Logs\WindowsUpdate\*.etl) DO tracerpt %i -of csv -o %~ni.csv
copy *.csv WindowsUpdate.csv

(tracerpt 似乎在某种程度上仅限于创建包含超过 4000 个条目的单个日志文件)

答案2

对于 Windows Server 2016 或 Windows 2016 LTSB,这篇微软文章描述如何Get-WindowsUpdateLog在无法访问 Microsoft 符号服务器的计算机上使用该命令。

最简单的选项是将 .etl 文件从C:\Windows\Logs\WindowsUpdate离线机器复制到您的(在线)管理机器,然后使用该-ETLPath选项指向Get-WindowsUpdateLog已复制的文件。

答案3

该答案不再有效。 取消删除于mirh 的请求因为它可以作为未来研究的参考点。使用mirh 的回答或者我的新答案反而。

如下所述使用方法tracefmt基于 Microsoft 博客文章,在我于 2018 年初发布时有效,但在当年晚些时候停止工作。它似乎不再起作用,即使对于 Windows 1709 或更高版本也是如此。


tracefmt您可以使用Windows 10 SDK 将事件跟踪日志转换为纯文本。

C:\Windows\Logs\WindowsUpdate首先,将目标机器上的文件复制到管理机器上的方便位置。

打开命令行窗口,更改为包含跟踪文件副本的目录,然后运行以下命令:

for %i in (*.etl) do "c:\Program Files (x86)\Windows Kits\10\bin\x64\tracefmt.exe" -o %~ni.txt -r srv*c:\symbols*https://msdl.microsoft.com/download/symbols %i

管理计算机必须安装 Windows 10 SDK 并需要直接访问互联网。它本身不需要运行 Windows 10。

然后您可能希望将日志合并到一个文件中:

copy *.txt WindowsUpdate.log

相关内容