Windows Updateで行われるパッチ(Windows更新プログラム)当ての適用一覧を知りつつ、
そのパッチ適用したインストール日をコマンドで確認する方法を紹介します。
パッチはKB(※)でその修正内容が情報公開されるので、パッチ名には該当のKB情報番号が付いています。
※ 「Knowlge Base」の略。マイクロソフト技術情報ナレッジベース
環境・前提条件
この記事のコマンドでWindowsのパッチKBの適用一覧とインストール日を知る方法は、以下でで確認しています。
- Windows Server 2012 R2
- Windows 7
- Windows10(PowerShell)
【PowerShell】Windows Updateパッチ適用一覧の確認コマンド
わかり易いコマンドレット名の「Get-HotFix」
こちらはWindows10で確認した、PowerShellでWindows Updateのパッチ適用状況を確認できるpowershellコマンドレットです。
Get-HotFix
ちなみに、「更新プログラム(パッチ)」というのは、「HotFix(修正プログラム)」とも言われます。いろんな通称の呼び名があります。
更新プログラム=パッチ=HotFix(ホットフィックス)=修正プログラム≒KB(厳密には違います。パッチ名にKBが付いているだけです)
そう考えますと、このコマンド名は、簡単であり、わかり易くて良いですよね!
Windows PCのOSバージョン情報一覧を取得する「Get-ComputerInfo」コマンドレット
こちらもWindows10で確認した、PowerShellでWindows Updateのパッチ適用状況を確認できるpowershellコマンドレットです。PowerShellバージョン5.1以上で動作します。
(Get-ComputerInfo).OsHotFixes
やっぱりGet-ComputerInfoでも、OSHotFixesとホットフィックスという名前が使われていますね。
またGet-ComputerInfoコマンドレットの場合は、1903といったWindows10の機能更新プログラム適用状況も確認できます。
(Get-ComputerInfo).WindowsVersion
今まで適用したすべてのパッチ適用一覧と数が一致しない(適用更新プログラム情報が少ない)気がするけど?
以下で紹介する別のコマンドでも同様ですが、全部のWindows Updateのパッチ適用状況まではわからず、どのコマンドで確認しても通常は同じパッチ情報までしかわかりませんでした。
これは丁度、視覚的にパッチ適用情報が確認できるコントロールパネルの「インストールされた更新プログラム」の情報の個数と一致していましたので、アンインストールが可能なWindows Updateのパッチ適用情報しか得られないのだろうと思っています。
どうしてもたくさんのすべての全部パッチ適用情報が入手したい場合は
PowerShellで関数を用意するれば出来なくは無いです。
Function Get-MicrosoftUpdates
{
Param(
$NumberOfUpdates,
[switch]$all
)
$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
if($all)
{
$HistoryCount = $Searcher.GetTotalHistoryCount()
$Searcher.QueryHistory(1,$HistoryCount)
}
Else { $Searcher.QueryHistory(1,$NumberOfUpdates) }
} # Get-MicrosoftUpdates 関数の終わり
詳細は以下の、マイクロソフトのサイトを参照してください。
こちらのPowershell関数をps1ファイルで用意するか、もしくは実際に入力し、
Get-MicrosoftUpdates -all
を実施すれば、すべてのWindows Updateのパッチ適用結果の出力を得ることが出来ます。
なぜか、「-all」といったオプションを付けないとエラーになります。
こちらのPowerShell関数では1903といった、Windows10の機能更新プログラム適用状況も確認できます。
【コマンドプロンプト】Windows Updateパッチ適用一覧の確認コマンド
※以下のコマンドでは、全部のWindows Updateのパッチ適用状況までは、わからず、どのコマンドで確認しても通常はコントロールパネルで視覚的にわかるパッチ情報までしかわかりませんでした。
どうしても、すべての全部のパッチ適用情報が入手したい場合は上のPowerShellの「どうしてもたくさんのすべての全部パッチ適用情報が欲しい場合は」を参照。
KB一覧だけ知りたい場合は「systeminfo」コマンド
コマンドプロンプトで「systeminfo」を実行すると、システム情報と一緒にKB一覧も出力されます。
systeminfo
ただ、この方法ではインストール日が分からないんですよね。
Windowsパッチ適用日まで知るには「wmic qfe list」
wmicを使用してwmiから情報を出力するコマンドが以下です。
wmic qfe list
これは便利ですね!