如何將 Windows 更新用戶端日誌轉換為純文字?

如何將 Windows 更新用戶端日誌轉換為純文字?

在 Windows 10 中,Windows Update 用戶端使用事件追蹤,而不是像先前版本的 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 符號伺服器的電腦上使用該命令。

C:\Windows\Logs\WindowsUpdate最簡單的選項是將離線計算機上的.etl 檔案複製到(線上)管理計算機,然後使用該-ETLPath選項指向Get-WindowsUpdateLog複製的檔案。

答案3

這個答案不再有效。 取消刪除於米爾的請求因為它可以作為未來研究的參考點。使用米爾的回答或者我的新答案反而。

如下所述的使用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

相關內容