在 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