Windowsのアップデートに関して言えば、Microsoftがログの保存方法を時々変更していることは、ほとんどの人がご存知でしょう。Windows 10と11では、従来の方法はWindowsUpdate.logもはや主流ではなく、バイナリ形式のデータダンプとも言えるETLファイルに移行しました。何が起こっているのかを解明しようと頭を悩ませたり、どのようなアップデートがインストールされたのかを確認したい場合、ETLファイルは人間にとって読みにくいため、非常に面倒です。しかし、これらのログを読み取り可能な形式に変換する方法があります。完璧ではありませんが、確かに存在します。
重要な点の一つは、Windows 10 1709およびWindows Server 2016以降、ログが従来のテキストファイルに直接書き込まれなくなったことです。代わりに、WindowsはETW(Event Tracing for Windows)ログを生成し、%windir%\Logs\WindowsUpdate.ETLにファイルとして保存します。そのため、操作方法を知らない限り、メモ帳で開いても意味不明な文字列が表示されます。幸いなことに、MicrosoftはETLファイルを読み取り可能なファイルに変換する便利なPowerShellコマンド「Get-WindowsUpdateLog 」を追加しました。Windowsは必要以上に処理を複雑にしていますが、このコマンドは非常に信頼性が高いです。WindowsUpdate.log
Windows 10/11でWindows Updateのログを抽出して読む方法
方法1: PowerShellを使用して読み取り可能なログを取得する
これは今では標準的な方法です。PowerShellを管理者として実行します( を押して「Windows PowerShell (管理者)」Windows + Xを選択するか、検索してください)。以下のコマンドを入力してください。
Get-WindowsUpdateLog -LogPath C:\Temp\WindowsUpdate.log
このコマンドは、様々な.ETLファイルを取得し、それらをつなぎ合わせて、指定したパスに、ある程度人間が読める形式の単一のログファイルを作成します。フォルダがない場合はC:\Temp、作成してください。問題ありません。設定によっては、ログの生成に1分ほどかかる場合があります。特にアップデートが多い場合やインターネットの速度が遅い場合は、その傾向が顕著です。また、システムがMicrosoftのシンボルサーバーにアクセスできない場合(制限の厳しいネットワークなど)、変換が失敗したり、不完全になったりする可能性があります。その場合は、.ETL適切なインターネットアクセスが可能なマシンにファイルをコピーし、そこでコマンドを実行すると、多くの場合問題が解決します。
方法2: コアディレクトリを直接探索する
何らかの理由でPowerShellコマンドがうまく動作しない場合は、ETLファイルは%windir%\Logs\WindowsUpdateに保存されています。ファイルエクスプローラーまたはコマンドラインからそこに移動し、最新のファイルを取得できます.ETL。その後、上記の変換コマンドを実行します。パラメータには、これらのファイルを含むフォルダを指定してください-ETLPath。例:
Get-WindowsUpdateLog -ETLPath "C:\Logs\WindowsUpdate" -LogPath "C:\Temp\WindowsUpdate.log"
こうすれば、rawファイルを開くのに手間取る必要はもうありません。スクリプトが面倒な処理をしてくれます。繰り返しますが、ファイルサイズとシステム速度によっては、多少の待ち時間が発生することを覚悟してください。また、環境によっては、最初は失敗しても、再起動や調整をすることで解決する場合もありますので、一度試しただけで諦めないでください。
ヒント: 生成されたログを開いて分析する
読みやすい形式にできたらWindowsUpdate.log、メモ帳などのお気に入りのテキストエディタで開いてください。長くて少し乱雑ですが、アップデートのトラブルシューティングを行う場合は、問題が発生した時間帯のエラーや警告を探してください。特定のKB番号や、 Failed、Exit Code、FATALCtrl + Fなどのエラーコードを検索()することもできます。完璧ではありませんが、生のETLファイルを解読するよりはましです。
また、ちょっとした豆知識として、ログはエージェント、AU(自動更新)、ハンドラーログなど、様々なソースから大量の情報を収集します。Windows Updatesに特化したい場合は、「」などの用語、\sagent\sまたは特定のKB番号を「」で囲んで検索してくださいSelect-String。例えば、以下のようになります。
Select-String -Pattern '\\sagent\\s' -Path C:\Temp\WindowsUpdate.log | Select-Object -Last 30
これにより、パターンや繰り返し発生するエラーを迅速に見つけることができます。
Windowsで更新履歴を確認する方法
とても簡単です。 「設定」 > 「更新とセキュリティ」 > 「Windows Update」 > 「更新履歴の表示」と進むだけです。または、ファイル名を指定して実行ボックスに「ms-settings:windowsupdate-history」と入力してください。インストールされた内容と日時が表示されます。
よりスクリプト化したい場合は、PowerShell を使用できます。以下を実行します。
Get-CimInstance win32_quickfixengineering | sort-object installedon -desc
最近のアップデートとインストール日の一覧が表示されます。より詳細な制御が必要な場合は、GitHubプロジェクト「Winhance」がアップデート履歴を取得するための様々なスクリプトを提供しており、自動化にも役立ちます。
まとめると、これらのツールやコマンドは少し大げさに思えるかもしれませんが、慣れてしまえばかなり便利です。アップデートの問題の解決は必ずしも簡単ではありませんが、ログを確認する方法を理解しておくと、舞台裏で何が起こっているかをより明確に把握するのに大いに役立ちます。