PowerShellを使って適用済みの更新プログラムの一覧(Windows UpdateのKB番号)を取得する方法
本エントリーの目次
PCに適用されている更新プログラム(Windows Update)の一覧を取得・確認したい!
Windows OSが搭載されているPCでは、Windowsの脆弱性や不具合の改善のため、更新プログラム(Windows Update)を適用して最新の状態としておくのが望ましいです。
参考:Windows Updateは必要なの?実行しない場合はどんな問題が起きるの?
そしてPCの運用・管理の都合から、現在PCにインストール・適用されている更新プログラムの一覧(Windows UpdateのKB番号)を取得、確認したい!
というケースもあるでしょう。
Windows PCにインストールされている更新プログラムの一覧を取得する方法は、複数存在します。
その中でも特に簡単に利用できるであろう方法が、PowerShellのコマンドレットを使用する方法です。
そこで今回は、PowerShellを使ってPCにインストール・適用されている更新プログラムの一覧(Windows UpdateのKB番号)を取得する方法をご紹介しますので、ぜひご活用ください!
PowerShellを使って、PCに適用されている更新プログラム(Windows Update)の一覧を取得する方法
PowerShellを使って、PCに適用されている更新プログラムの一覧を取得する場合は、以下のような方法を利用すると良いでしょう。
『Get-ComputerInfo』コマンドレットを使用して取得する
少し前にこのブログで、コンピューター名やOSのバージョン、ビット、ログオンしているサーバーなど、コンピューターに関する各種情報を取得する方法として、『Get-ComputerInfo』コマンドレットを使った情報の取得方法をご紹介しています。
参考:PowerShellを使ってコンピューター名やOSのバージョン、ビットなどの情報を取得する方法
実はこの『Get-ComputerInfo』コマンドレットでは、PCに適用されている更新プログラムも取得可能です。
適用されている更新プログラムの一覧は、『Get-ComputerInfo』コマンドレットの実行結果の『OsHotFixes』に格納されています。
そのため、『Get-ComputerInfo』コマンドレットを使って更新プログラムの一覧のみを取得したいケースでは、以下のようなコマンドを実行すると良いでしょう。
1 | (Get-ComputerInfo).OsHotFixes |
ただしこの方法には弱点があります。
と言いますのも、『Get-ComputerInfo』コマンドレットは、PowerShell 5.1で導入された比較的新しい機能です。
This cmdlet was introduced in Windows PowerShell 5.1.
したがってPowerShell 5.1の機能が利用できないWindowsでは、『Get-ComputerInfo』コマンドレットが使用できず、それを利用した適用済み更新プログラムの一覧取得もできません。
適用済みの更新プログラムの一覧を取得する”専用のコマンドレット”を使用する方法
実はPowerShellでは、適用済みの更新プログラムの一覧を取得する”専用のコマンドレット”が用意されています。
これは『Get-HotFix』というコマンドレットで、以前のバージョンのPowerShellでも利用可能※です。
そのため以前のバージョンのPowerShellがインストールされている環境で、適用済みの更新プログラムの一覧情報だけが必要であれば、『Get-HotFix』コマンドレットの使用をおすすめします。
※手元にあったWindows 7(PowerShell 2.0)では、正常に動作することを確認しています。
『Get-HotFix』コマンドレットを実行すると、以下のような適用済みの更新プログラムの一覧情報が取得できます。
1 2 3 4 5 6 7 8 9 10 11 | PS C:\> Get-HotFix Source Description HotFixID InstalledBy InstalledOn ------ ----------- -------- ----------- ----------- WIN10TESTPC Update KB4514359 NT AUTHORITY\SYSTEM 2019/09/18 0:00:00 中略 WIN10TESTPC Update KB4515384 NT AUTHORITY\SYSTEM 2019/09/18 0:00:00 PS C:\> |
『Get-HotFix』コマンドレットでは、Descriptionの値を使って絞り込んだ結果を表示する『-Description』パラメーターが用意されています。
たとえばDescriptionが『Update』の更新プログラムの適用状態を取得したい場合には、『-Description』を併用し、以下のようなコマンドを実行します。
1 | Get-HotFix -Description "Update" |
適用済みの更新プログラムの一覧を、KB番号で絞り込んで取得する方法
あるコンピューターに対し、特定の更新プログラムが適用されているかを調べるために、KB番号で絞り込んだ結果一覧を取得したいケースもあるでしょう。
こういった場合には、『ID』パラメーターか『Where-Object』コマンドレットを使用することで対応可能です。
たとえば、KB番号4515384の更新プログラム(KB4515384)が適用(インストール)されているかどうかを調べるときは、以下コマンドを実行してください。
1 2 3 | Get-HotFix -id "KB4515384" #または Get-HotFix | Where-Object HotFixID -match "KB4515384" |
対象の更新プログラムがインストールされている場合では、結果文字列が取得されます。
またKB番号を使った絞り込みには、『Like』を使う方法も考えられます。
KB番号の先頭がKB451で始まる更新プログラムのインストール状況を調べたいときは、『match』ではなく『Like』を使用し、以下のようなコマンドを実行することでも結果を取得できます。
1 | Get-HotFix | Where-Object HotFixID -like "KB451*" |
適用済みの更新プログラムの一覧を、ソートして(並び替えて)取得する方法
『Get-HotFix』コマンドレットの結果を、ソートして(並び替えて)取得することも可能です。
KB番号を昇順ソートした結果を取得したいときは、以下コマンドを実行してください。
1 | Get-HotFix | Sort-Object HotFixID |
また、更新プログラムのインストール日の新しい順(日付の降順)に並び替えて取得したいときは、以下コマンドを実行します。
1 | Get-HotFix | Sort-Object InstalledOn -Descending |
適用済みの更新プログラムの一覧を、テキスト出力する方法
『Get-HotFix』コマンドレットの結果を、テキストファイルに出力したい場合には、『Get-HotFix | Out-File “<出力先のファイルパス>”』という形式のコマンドを実行してください。
C:\test\result.txtというパスに、『Get-HotFix』コマンドレットの結果をファイル出力したいときは、以下コマンドを実行します。
1 | Get-HotFix | Out-File "C:\test\result.txt" |
他のコンピューターの適用済み更新プログラムの一覧を取得する方法
『Get-HotFix』コマンドレットでは、他のコンピューターの適用済み更新プログラムの一覧を取得することも可能であり、以下のような形式のコマンドを実行します。
Get-HotFix -ComputerName <対象のコンピューターのコンピューター名、またはIPアドレス> -Credential <対象のコンピューターの資格情報>
ユーザー名がtest、IPアドレスが192.168.1.10のコンピューターの適用済み更新プログラムの一覧を取得したい場合には、以下のようなコマンドを実行してください。
1 | Get-HotFix -ComputerName 192.168.1.10 -Credential test |
コマンドを実行すると、直後に資格情報を入力する画面が表示されるので、testユーザーのパスワードを入力してから、OKボタンをクリックすることで、結果を取得できます。
尚、他のコンピューターに対して『Get-HotFix』コマンドレットを実行した際、『RPC サーバーを利用できません。』や『アクセスが拒否されました。』というエラーメッセージが表示され、適用済み更新プログラムの一覧を取得できないことがあります。
これは、情報の取得先コンピューターのファイアウォールが通信をブロックしている。
またはリモートUAC(UACのリモート制限)により、ブロックされている疑いがあります。
『Get-HotFix』コマンドレット実行時の『RPC サーバーを利用できません。』エラーや『アクセスが拒否されました。』エラーについては、Windows PCをリモートシャットダウンする方法やエラー時の対処方法でご紹介している対処方法で改善できるかもしれませんので、併せて参考になさってください。
コマンド操作によるWindowsのリモートシャットダウン・リモート再起動実行時のエラーの対処方法
以上、コンピューターの適用済み更新プログラムの一覧を取得したいときは、ぜひご活用くださーい!