Windowsでインストール済み(適用済み)の更新プログラムを確認したい場合、設定画面からWindows Updateの更新履歴を確認するのが一般的ですが、確認が必要な台数が多くなると1台ずつ設定画面を開いて確認するのは効率が良くありません。
そのようなときは、WindowsコマンドやPowerShellコマンドレットを使ってインストール済みの更新プログラムを収集するのが効率的です。
そこでここではWindows 10を例に、WindowsコマンドやPowerShellコマンドレットを使って、インストール済みの更新プログラムの一覧を収集する方法を紹介します。
目次
Windowsコマンドで確認
Windowsコマンドでインストール済みの更新プログラム一覧を収集するときは、コマンドプロンプトを起動して以下のコマンドを実行します。
> wmic qfe list brief
テキストファイルに出力
インストール済みの更新プログラム一覧をファイルに出力したいときは、以下のようにファイルにリダイレクトすればOKです。
> wmic qfe list brief >E:\result.txt
出力されたテキストファイルには、画面出力したときと同じ内容が記録されます。
PowerShellコマンドレットで確認
PowerShellコマンドレットでインストール済みの更新プログラム一覧を収集するときは、Get-HotFixコマンドレットを利用します。
PowerShellを起動して「Get-HotFix」と入力してエンターキーを押すと、以下のように更新プログラムの適用履歴が表示されます。
PS> Get-HotFix
KB番号で並べ替える
Get-HotFixコマンドレットの出力結果は、Sort-Objectコマンドレットで並べ替えることができます。
たとえば、KB番号(HotFixID列)で並べ替えたいときは、以下のようにコマンドを実行します。
PS> Get-HotFix | Sort-Object HotFixID
インストール日(InstalledOn列)の新しい順で並び替えたいときは、以下のようにコマンドを実行します。
PS> Get-HotFix | Sort-Object InstalledOn -Descending
Descriptionの値で絞り込む
Get-HotFixコマンドレットでは、Description列の値で出力結果を絞り込むこともでき、その場合は「-Description」オプションを利用します。
たとえば、Description列の値が「Update」の更新プログラムだけに絞り込みたい場合は、以下のようにコマンドを実行します。
PS> Get-HotFix -Description "Update"
KB番号で絞り込む
特定の更新プログラムが適用されているかを調べたいときは、Where-Objectコマンドレットを併用します。
たとえば、KB4556803という更新プログラムが適用されているか調べるときは、以下のようにコマンドを実行します。
PS> Get-HotFix | Where-Object HotFixID -match "KB4556803"
対象の更新プログラムがインストールされている場合は、結果文字列が出力され、該当する更新プログラムがない場合は、なにも出力されません。
KB番号の一部で絞り込む場合は、以下のようにコマンドを実行します。
PS> Get-HotFix | Where-Object HotFixID -like "KB454*"
テキストファイルに出力
Get-HotFixコマンドレットの出力結果を、テキストファイルに出力する場合は、Out-Fileコマンドレットを併用します。
たとえば「C:\result.txt」というファイルに出力するときは、以下のようにコマンドを実行します。
PS> Get-HotFix | Out-File "C:\result.txt"
出力されたテキストファイルは、次のような内容になります。
リモートマシンの適用履歴を取得
Get-HotFixコマンドレットは「-Computer」オプションで、リモートマシンのコンピューター名やIPアドレスを指定することで、他のWindows 10マシンの更新履歴を取得できます。
たとえば、IPアドレスが172.28.212.12のリモートマシンの更新履歴を取得する場合は、以下のようにコマンドを実行します。
PS> Get-HotFix -ComputerName 172.28.212.12 -Credential administrator
「-Credential」オプションには、リモートマシンの資格情報を入力します。
なお、ActiveDirectoryドメイン環境で、ドメインに参加しているマシン同士なら特別な設定をしなくても、リモートマシンに対してGet-HotFixコマンドレットを実行できますが、ワークグループ環境では、リモートマシンのファイアウォールに受信の許可設定を追加する必要があります。
リモートマシンが「Windows Defender ファイアウォール」を利用している場合は、リモートマシン上で、管理者権限でPowerShellを起動して、以下のコマンドを実行することで受信の規則を追加できます。
PS> New-NetFirewallRule -DisplayName "@RPC-enable" -Program "%SystemRoot%\System32\svchost.exe" -Profile Private -Direction Inbound -Protocol TCP -LocalPort RPC -Action Allow
あとがき
ちなみに、PowerShellならGet-ComputerInfoコマンドレットでもインストール済みの更新プログラムの一覧を取得することができます。
PS> (Get-ComputerInfo).OsHotFixes