[Posershell] WMICを利用したQFEのリストとIUpdateSearcherを使った場合の結果の違い

PowerShell

今回は Windows UpdateのKB情報を取得する方法として「WMIC (QFE)」を利用した場合と「IUpdateSearcher (WUA)」を利用した場合の違いについてまとめておきます。

まずは実行してみる

今回はWindows 11環境にて実施しています。

IUpdateSearcherを実行した場合

まずはIUpdateSearcharにてKB情報を取得します。

PS> (New-Object -ComObject Microsoft.Update.Session).CreateUpdateSearcher().Search('IsInstalled=1').Updates | Format-Table -AutoSize

実行後、下記のような結果が得られます。

Title AutoSelectOnWebSites
Windows Defender Antivirus マルウェア対策プラットフォームの更新プログラム – KB4052623 (Version 4.18.2001.10) True
2022-06 .NET Framework 3.5 および 4.8 の累積的な更新プログラム (x64 向け Windows 11 用) (KB5013889) False
Microsoft Defender Antivirus マルウェア対策プラットフォームの更新プログラム – KB4052623 (Version 4.18.2205.7) True
悪意のあるソフトウェアの削除ツール x64 – v5.103 (KB890830) True
Microsoft Defender Antivirus のセキュリティ インテリジェンス更新プログラム – KB2267602 (バージョン 1.371.514.0) True
2022-04 x64 ベース システム用 Windows 11 更新プログラム (KB4023057) True

WMICを利用して取得した場合

WMICを利用して取得してみます。

PS> wmic qfe list brief

実行すると、先ほどIUpdateSearcherで取得した結果と異なりました。(下記結果はわかりやすいようにテーブル化して表示しています)

HotFixID Description
KB5013889 Update
KB5007575 Update
KB5015814 Security Update
KB5014034 Update
KB5016353 Security Update

取得先の違いとまとめ

まずIUpdateSearcherインターフェースを利用して取得する場合、Microsoft Windows Installer (MSI) またはWindows Updateによって提供された更新プログラムなどを列挙します。

WMIC QFE コマンドで取得する際は WMIクラスのWin32_QuickFixEngineering を参照し情報を取得します。基本的にこのクラスはComponent Based Servicingのアップデートのみを返すため、取得結果が異なるということです。

簡単にいうとQFE(クリック・フィックス・エンジニアリング)更新と呼ばれるちょっとした更新を取得します。

ですので、更新プログラムを取得する場合はWUA(IUpdateSearcherを利用)とQFE(WMICを利用)の両方から取得する必要があります。

最後に

今回はWUAとQFEの取得結果の違いと取得先についてお話ししました。
是非、参考にしてください。

タイトルとURLをコピーしました