treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Windowsのアップデート適用を一覧表示したい

本日はWindows Updateの適用された一覧をデータ化する手順についてご報告します。
ちょっと役に立つTIPS、のつもりです。

この間、メーカサポートを受けるためにWindows Updateの適用一覧を提出する必要があったのですが、このWindows Updateの適用された一覧、というのは、顧客へシステムを納品する際にもエビデンスとして納品ドキュメントに情報として含めるケースも結構あるのではないでしょうか?

一番簡単な手順

コマンド「wmic qfe」これだけで一覧表示ができます。
実際に画面上で確認する際には「wmic qfe | more」と言った具合にページごとにポーズが掛かるようmoreを渡しておく方が見やすいですね。
試しに、今稼働中のWindows10で実行してみました。
----------------------------------------------
C:\Users\USER01>wmic qfe | more
Caption                                     CSName      Description      FixComments  HotFixID   InstallDate  InstalledBy          InstalledOn  Name  ServicePackInEffect  Status
http://support.microsoft.com/?kbid=3124263  T420S-08  Security Update               KB3124263               NT AUTHORITY\SYSTEM  1/25/2016
http://support.microsoft.com/?kbid=3135173  T420S-08  Security Update               KB3135173               NT AUTHORITY\SYSTEM  2/15/2016
http://support.microsoft.com/?kbid=3139907  T420S-08  Update                        KB3139907               NT AUTHORITY\SYSTEM  3/2/2016
http://support.microsoft.com/?kbid=3140741  T420S-08  Update                        KB3140741               NT AUTHORITY\SYSTEM  3/25/2016
http://support.microsoft.com/?kbid=3140743  T420S-08  Update                        KB3140743               NT AUTHORITY\SYSTEM  3/3/2016
http://support.microsoft.com/?kbid=3140768  T420S-08  Security Update               KB3140768               NT AUTHORITY\SYSTEM  3/9/2016
http://support.microsoft.com/?kbid=3154132  T420S-08  Security Update               KB3154132               NT AUTHORITY\SYSTEM  4/15/2016
http://support.microsoft.com/?kbid=3147458  T420S-08  Security Update               KB3147458               NT AUTHORITY\SYSTEM  4/19/2016
----------------------------------------------
ちょっと少ない気もするのですが、Windows10ではいままでのようにKBを一覧できる画面が見当たらないので、このコマンドを使うといいのかもしれないですね。

ファイルに書き出すときには「wmic qfe>updList1604.txt」と言った具合に「リダイレクタ(">"か">>")」で出力先をファイル名を指定して書き出すことができます。

書き出したデータをどうする?

書き出したデータはExcelに貼り付けて一覧表にしてしまうのが一番扱いやすいと思います。ただ出力したデータはスペースで区切られたテキストなので、カンマ区切りやタブ区切りがなくExcelに貼り付けるだけでは表の体にはなりません。
そこでExcelの「データ」タブから「区切り位置」をクリックして「区切り位置指定ウィザード」で表の形にしてしまいます。
図1:区切り位置指定ウィザード-1

f:id:treedown:20160425184334p:plain
データのプレビュー欄で、列の区切りをちょうどいい箇所に手動で打ち込んでいきます。
図2:区切り位置指定ウィザード-2

f:id:treedown:20160425184350p:plain
最後にデータの型を選択して終了です。私は文字列にした方が扱いやすいことが多いので全選択して文字列にし完了しています。
図3:区切り位置指定ウィザード-3

f:id:treedown:20160425184406p:plain
こうして表になりました。

f:id:treedown:20160425184425p:plain

後は.csvなり.tsvなりでテキストにもできますし、フィルタで絞り込むこともできるようになります。

昔の話

ちなみにこのwmicコマンド、netコマンドと同様にサブコマンドでいろいろなことができる汎用的なコマンドです。
もう知ってても役には立たない知識なんですが、WindowsXP時代にはこのwmicコマンドでユーザアカウントの設定をやってました。
(※話のネタにでもどうぞ)
現在は、「net user %USERNAME% %PASSWORD% /add」で生成したユーザを「net accounts」コマンドでパスワードの有効期限を一括で設定をすることが可能です。
XPくらいの昔にはこの「net accounts」コマンドで有効期限を設定する、ということができなかったので、wmicコマンドでユーザ別にパスワードの有効期限設定をしていました。例えば、
> net user %USERNAME% %PASSWORD% /add
> wmic useraccount where "Name='%USERNAME%'" set PasswordExpires=FALSE
こんな感じです。これでユーザを作成したい分だけコマンド行を記述してパスワードの有効期限を設定する、という動作にwmicコマンドを使っていました。

wmicコマンドはそもそもWMI(Windows Management Instrumentation)を操作するためのUIのようなコマンドです。
上記のWindowsXP時代に使った例では、wmicコマンドのサブコマンド「useraccount」を指定して、OS内のユーザアカウントを操作したわけですが、他にもさまざまなWMIを利用した管理命令を実行可能です。

もし興味が湧いたようでしたら@ITの記事が分かりやすく解説されています。

Tech TIPS:WindowsでWMIとwmicコマンドを使ってシステムを管理する(基本編) - @IT

wmicコマンドでシステムの構成を設定/変更する − @IT

今日の結論

Windows Updateは相変わらず不具合を出す可能性を秘めていますので、現在何が適用されているかを提示して人に相談するシチュエーションは増えつつありますね。
システム管理者であれば、なおサーバのWindows Update管理をするために、現在の適用状況を把握しておく必要があるので、ちょっとしたTIPSですが役に立つかもしれません。
その時、手軽にwmicコマンドで出力して表を生成できると便利に使えると思いますよ。