
Patch Manager で適用した .NET Framework の KB 番号が Get-HotFix の KB 番号と一致しないときにパッチが正しく適用されたか確認する方法
困っていた内容
Amazon EC2 上の Windows Server に、AWS Systems Manager Patch Manager でパッチを適用しています。
.NET Framework の更新を適用したところ、Patch Manager に表示される KB 番号と、OS 上で確認できる KB 番号が一致しませんでした。
| 確認箇所 | 表示された KB |
|---|---|
| Run Command の実行結果/パッチコンプライアンス | KB5126144 |
Get-HotFix |
KB5126048 |
| コントロールパネル(インストールされた更新プログラム) | KB5126048 |
承認していないパッチが適用されたのか、それとも承認したパッチが適用されていないのかを確認したいです。
どう対応すればいいの?
.NET Framework の累積的な更新プログラム特有の仕様が、原因である可能性があります。
.NET Framework の累積的な更新プログラムには、複数の .NET Framework バージョンを対象とし、製品バージョン別の更新プログラムを含むものがあります。
含まれる更新プログラムは、Microsoft Support の各 KB のページにある「この更新プログラムの関連情報」の欄に一覧で載っています。
例:Windows Server 2019 向けの KB5126144 の場合
この更新プログラムの関連情報
以下の資料では製品バージョン別に、この更新プログラムに関する追加情報が掲載されています。
- 5126043 Windows 10 Version 1809 および Windows Server 2019 用 .NET Framework 3.5 および 4.7.2 の累積的な更新プログラムについて (KB5126043)
- 5126048 Windows 10 Version 1809 および Windows Server 2019 の.NET Framework 3.5 および 4.8 の累積的な更新プログラムについて (KB5126048)
OS に実際にインストールされるのは、インスタンスに入っている .NET Framework のバージョンに合った、製品バージョン別の更新プログラムです。
そのため、Patch Manager には対象となる累積的な更新プログラムの KB 番号が表示され、OS には製品バージョン別の更新プログラムの KB 番号が表示されることがあります。
OS 側の KB 番号が、Patch Manager に表示された KB の Microsoft Support ページにある「この更新プログラムの関連情報」に載っていれば、承認したパッチは正しく適用されていると判断できます。
確認手順
1. 含まれている製品バージョン別の更新プログラムを確認する
Patch Manager に表示された KB 番号で、Microsoft Support のページを開きます。
「この更新プログラムの関連情報」に書かれている製品バージョン別の更新プログラムを確認してください。
2. インスタンスの.NET Framework のバージョンを確認する
.NET Framework 4.5 以降のバージョンは、レジストリ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full の Release 値で確認できます。
Microsoft Learn に掲載されている以下の PowerShell を実行すると、インストールされている .NET Framework のバージョンが表示されます。
$release = Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release
switch ($release) {
{ $_ -ge 533320 } { $version = '4.8.1 or later'; break }
{ $_ -ge 528040 } { $version = '4.8'; break }
{ $_ -ge 461808 } { $version = '4.7.2'; break }
{ $_ -ge 461308 } { $version = '4.7.1'; break }
{ $_ -ge 460798 } { $version = '4.7'; break }
{ $_ -ge 394802 } { $version = '4.6.2'; break }
{ $_ -ge 394254 } { $version = '4.6.1'; break }
{ $_ -ge 393295 } { $version = '4.6'; break }
{ $_ -ge 379893 } { $version = '4.5.2'; break }
{ $_ -ge 378675 } { $version = '4.5.1'; break }
{ $_ -ge 378389 } { $version = '4.5'; break }
default { $version = $null; break }
}
if ($version) {
Write-Host -Object ".NET Framework Version: $version"
} else {
Write-Host -Object '.NET Framework Version 4.5 or later is not detected.'
}
3. OS 上で適用済みの KB を確認し、手順 1 の一覧と突き合わせる
Get-HotFix
手順 2 で確かめた .NET Framework のバージョン向けの更新プログラムが、手順 1 の一覧に含まれていれば承認したパッチは正しく適用されていると判断できます。
まとめ
- .NET Framework の累積的な更新プログラムには、製品バージョン別の更新プログラムを含むものがあります。
- Patch Manager には累積的な更新プログラムのKB番号が、OS には実際にインストールされた製品バージョン別のKB番号が表示されることがあります。
- KB 番号が違っても、OS 上の KB が Microsoft Support のページの「この更新プログラムの関連情報」に含まれていれば、承認したパッチは正しく適用されています。










