PowerShell を使用して Windows Update 履歴を表示する方法

どのWindows Updateが実際にインストールされたか、あるいは失敗したかを確認したい場合、PowerShellは驚くほど高速です。更新履歴を確認したり、特定のKBや日付範囲でフィルタリングしたり、すべてをCSVにエクスポートしたりすることも可能です。膨大なメニューをくまなく探したり、設定画面であれこれクリックしたりする必要はありません。便利そうに聞こえますが、どのコマンドを実行すればいいのか、どのファイルが作成されるのかがわからない場合もあります。そこで、実際に役立つコマンドを使った簡単なチュートリアルをご紹介します。

PowerShell を使用して Windows 更新履歴を確認する方法

PowerShellを管理者として開く

  1. Windows + Sを押して、PowerShellと入力します。アイコンを見つけますが、クリックするのではなく、右クリックして「管理者として実行」を選択します。
  2. ユーザーアカウント制御のプロンプトが表示されたら、「はい」をクリックします。この手順は非常に重要です。通常のPowerShellでは更新ログの詳細を確認することはできません。
  3. ここから魔法が始まります。設定によっては、管理者としてPowerShellを開くのに余分なクリックや再起動が必要になる場合がありますが、フルアクセスには必要です。

インストールされているすべての Windows 更新プログラムを表示

  1. インストールされているものを確認するには、次のコマンドを実行してくださいGet-HotFix。KB、説明、インストール日別にパッチがリストされます。非常に詳細な情報ではありませんが、最近のアップデートを確認したり、特定のKBのトラブルシューティングを行うには十分です。
  2. デフォルトの出力が大きすぎる場合は、パイプ処理したりFormat-Table -AutoSize、特定の列を選択したりして、わかりやすくしてください。例:
    Get-HotFix | Select HotFixID, InstalledOn, Description | Format-Table -AutoSize

設定によっては、特定の更新をすばやく確認する必要がある場合があります。次のようにフィルタリングします。

日付またはKB IDで更新をフィルタリング

  1. 特定の KB をお探しですか? 実行: Get-HotFix | Where-Object {$_. HotFixID -eq "KB1234567"}。特に最近の修正プログラムがあるかどうかを確認するのに役立ちます。
  2. 先月インストールされた更新プログラムを確認するには、こちらを試してください Get-HotFix | Where-Object {$_. InstalledOn -gt (Get-Date).AddDays(-30)}。最近の問題をトラブルシューティングするときに役立ちます。

注意: これらのフィルターは完璧ではありません。日付の形式や Windows が修正プログラムを記録する方法が煩わしい場合があるので、結果が多少異なっても驚かないでください。

更新履歴をファイルにエクスポートする

  1. これは、PowerShell の外部、たとえば Excel で記録や確認を行いたい場合に便利です。 を実行します Get-HotFix | Export-Csv "C:\Users\Public\WindowsUpdateHistory.csv" -NoTypeInformation
  2. 次に、CSVファイルをExcelまたは任意のスプレッドシートエディタで開きます。InstalledOnまたはHotFixID並べ替えて、パッチのタイムラインを分析できます。

簡単そうに見えますが、一部の更新は、置き換えられたり、システムのパッチ履歴が破損したりした場合に表示されない場合があることに注意してください。

詳細なログを取得するには Windows Update モジュールを使用する

  1. モジュールをインストールします。PowerShell Install-Module PSWindowsUpdateを管理者として実行し、プロンプトに「はい」と答える必要があるかもしれません。当然ながら、Windowsはこの面倒な作業を必要以上に複雑にしているからです。
  2. インストールが完了したら、次のコマンドを使用してすべての更新履歴を一覧表示します Get-WUHistory
  3. これにより、保留中の更新、成功、失敗の状態、タイムスタンプなど、より詳細なビューが表示されます。

一部のコンピューターでは、ポリシーまたはインターネットの問題により、モジュールのインストールが失敗する場合があります。管理者として PowerShell を再実行して、もう一度試してください。

PowerShell でイベント ビューアーのログを確認する

  1. 更新イベントとエラーを詳細に調べるには、次のコマンドを実行します Get-WinEvent -LogName System | Where-Object {$_. ProviderName -eq "Microsoft-Windows-WindowsUpdateClient"} | Select-Object TimeCreated, Message
  2. これにより、イベント ビューアーから詳細なログが取得され、更新が失敗した理由や、保留状態のままになっているかどうかが正確に明らかになります。
  3. ほとんどの場合、エラーはメッセージ内に存在するため、「インストールに失敗しました」などのメッセージが表示されたら、詳しく調べる準備をしておいてください。

それほど驚くことではありませんが、このコマンドによって数百のエントリがダンプされることがあるので、フィルターを追加したり、「エラー」などのキーワードを検索したりすると、絞り込むのに役立ちます。

PowerShellで更新履歴を確認する理由

高速でスクリプト化が可能で、必要に応じて自動化も可能なため、失敗に終わったパッチを素早く特定したり、実際にインストールされた内容を確認したりするのに役立ちます。特に、Windows Update の GUI で詳細情報が表示されない場合に便利です。さらに、GUI だけでは簡単には実行できない、複数のマシンでのリモートトラブルシューティングにも最適です。

よくある質問

失敗した更新を一覧表示するにはどうすればいいですか?

Windows Update モジュールを使用して、次のようなフィルターで結果をフィルタリングします Get-WUHistory | Where-Object {$_. ResultText -like "*Failed*"}。こうすることで、失敗が目立ちます。

アップデートをアンインストールできますか?

はい。問題のKBを見つけて、 wusa.exe /uninstall /kb:XXXXXXX管理者権限のコマンドプロンプトまたはPowerShellから次のコマンドを実行してください。削除するKBが本当に削除対象であることを確認してください。更新プログラムを削除すると、別の問題が発生する場合があります。

Get-HotFix と Get-WUHistory の違いは何ですか?

Get-HotFix はインストール済みの項目をシンプルに表示します。Get-WUHistory(モジュール経由)は、インストール済み、保留中、失敗、スケジュール済みなど、より詳細な情報を提供します。

別のコンピューターをリモートでチェックできますか?

はい、管理者権限があり、リモート管理が有効になっている場合は、リモート PC に対して次のコマンドを実行できます。

Invoke-Command -ComputerName PCName -ScriptBlock { Get-HotFix }

または、リモートオプション付きのモジュールを使用します。ただし、追加の権限やファイアウォールの調整が必要になる場合があるので注意してください。

最後に

総じて、PowerShellはGUIの煩わしさなしにアップデート情報を確認するのに非常に効果的です。簡単なチェックでも詳細なレポートでも、これらのコマンドは煩雑さを解消します。コマンドラインに慣れている方なら、時間の節約になり、PCの挙動が不安定になった時にも驚くことが少なくなります。ただし、アップデートが滞っている場合は、再起動やWindows Updateコンポーネントのクイックリセット(SoftwareDistributionフォルダのクリアなど)で問題が解決することもあります。しかし、これらのコマンドを使えば、事前にはるかに明確な状況を把握できます。