😽

【Windows】システムに適用されているKBの確認方法

2022/08/24に公開

きっかけ

どこのプロジェクトもそうかもしれませんが、Windowsの脆弱性が見つかると、WindowsUpdateをするように注意喚起されることがあるかと思います。
その際、自分が利用しているシステムは果たして修正プログラム(KB)が適用されているのかの確認方法を調べてみましたのでまとめてみます。

コマンドプロンプトから 「systeminfo」 コマンドを実行

私が真っ先に思いついた方法でした。
私の環境のWindowsServerでは以下のよう出力されていました。

C:\Users\Administrator>systeminfo

Host Name:                 XXXXXXX-XXXXXXX ※マスクしています
OS Name:                   Microsoft Windows Server 2019 Datacenter
OS Version:                10.0.17763 N/A Build 17763
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Server
OS Build Type:             Multiprocessor Free
<途中省略>
Hotfix(s):                 40 Hotfix(s) Installed. ※インストールされているKB
                           [01]: KB5015731
                           [02]: KB4470502
                           [03]: KB4470788
                           [04]: KB4480056
                           [05]: KB4486153
                           [06]: KB4493510
                           [07]: KB4499728
                           [08]: KB4504369
                           [09]: KB4512577
			   .
			   .
			   .

ちなみにシステムの起動時間などもわかりますので、障害調査する際にも有効なコマンドだと思います。

PowerShellから「Get-HotFix」コマンド実行

今回調べて新たに発見した方法がPowerShellから「Get-HotFix」コマンドを利用する方法です。
早速自分の環境で実行すると以下のように出力されました。

PS C:\Users\Administrator> Get-HotFix

Source        Description      HotFixID      InstalledBy          InstalledOn              
------        -----------      --------      -----------          -----------              
XXXXXXX-XX... Update           KB5015731     NT AUTHORITY\SYSTEM  8/10/2022 12:00:00 AM    
XXXXXXX-XX... Update           KB4470502     NT AUTHORITY\SYSTEM  12/12/2018 12:00:00 AM   
XXXXXXX-XX... Security Update  KB4470788     NT AUTHORITY\SYSTEM  12/12/2018 12:00:00 AM   
XXXXXXX-XX... Update           KB4480056     NT AUTHORITY\SYSTEM  1/9/2019 12:00:00 AM     
XXXXXXX-XX... Update           KB4486153     NT AUTHORITY\SYSTEM  3/11/2021 12:00:00 AM
.
.
.
※Sourceはホスト名のためマスクしています

Descriptionも出力されるため、何のKBなのかわかりやすいですね。
また、コマンドのオプションを使用すると該当するKBのみフィルターして出力されます。

例)"Updateのみを出力"
PS C:\Users\Administrator> Get-HotFix -Description "Update"

Source        Description      HotFixID      InstalledBy          InstalledOn              
------        -----------      --------      -----------          -----------              
XXXXXX-XX... Update           KB5015731     NT AUTHORITY\SYSTEM  8/10/2022 12:00:00 AM    
XXXXXX-XX... Update           KB4470502     NT AUTHORITY\SYSTEM  12/12/2018 12:00:00 AM

また、特定のKBのみを出力する方法もあります。
この方法を使用してある特定のKBが適用されているのかどうか確認ができます。

例)"KB5015731のみを出力"
PS C:\Users\Administrator> Get-HotFix -id "KB5015731"

Source        Description      HotFixID      InstalledBy          InstalledOn              
------        -----------      --------      -----------          -----------              
XXXXXXX-XX... Update           KB5015731     NT AUTHORITY\SYSTEM  8/10/2022 12:00:00 AM    

上記だと完全一致するものしか出力されませんが、「like」を使用して部分一致するKBを出力することも可能です。

例)"「KB500」から始まるKBを出力"
PS C:\Users\Administrator> Get-HotFix | Where-Object HotFixID -like "KB500*"

Source        Description      HotFixID      InstalledBy          InstalledOn              
------        -----------      --------      -----------          -----------              
XXXXXXX-XX... Security Update  KB5000859     NT AUTHORITY\SYSTEM  3/11/2021 12:00:00 AM    
XXXXXXX-XX... Security Update  KB5001404     NT AUTHORITY\SYSTEM  4/14/2021 12:00:00 AM    
XXXXXXX-XX... Security Update  KB5003243     NT AUTHORITY\SYSTEM  5/13/2021 12:00:00 AM    

まとめ

今回はKBを調べるために「Get-HotFix」コマンドの一部簡易的な使い方を紹介しましたが、
ローカルホストではなく、リモートホストのKBを調べる際に利用している事例を発見しました。
他にも色々と便利に使えるようなのでまた調べて投稿したいと思います。
最後までお読みいただきありがとうございました。

参考

参考:Get-HotFix_コマンドリファレンス

参考:Windows10のPowerShellで更新プログラムの適用履歴を確認する方法

Discussion