Windowsアップデートの更新プログラムをコマンドラインからインストール/アンインストールする方法

Windowsアップデートの更新プログラムをコマンドラインからインストール/アンインストールする方法

Windowsアップデートは自動で出来ますが、インターネットに繋がっていないシステムの場合、更新プログラムをDVD等に入れて、そのパソコンへコマンドでインストールすることができます。その方法を解説します。



本記事での更新プログラム適用方法

Windowsアップデートは自動でできますが、以下のようなケースでは更新プログラムをダウンロードして、適用するパソコンへ格納した後、インストールする必要があります。

インターネットできないパソコンに更新プログラムを適用するとき

自動で行うWindowsアップデートは、インターネットに接続していないとできません。

IT企業が納めるシステムに更新プログラムを適用するとき

IT企業が会社や官公庁に納めるシステムは、原則、自動のWindowsアップデートは行いません。理由は、予め検証用システムに更新プログラムを適用し、テストで問題ないことを確認してから本番用システムに適用する必要があるからです。

更新プログラムをインストールする手順の流れ

自動で適用できないパソコンには、以下の手順で行います。この手順を本記事で解説します。

  1. マイクロソフトのサイトからパッチをダウンロードする
  2. ダウンロードしたパッチファイルを適用対象のパソコンのディスクに保存する
  3. コマンドラインでパッチファイルをパソコンに適用する

更新プログラムのインストール

例えば、マイクロソフトのサイトから「 Windows6.1-KB2425227-x64.msu 」というパッチファイルをダウロードして、このパッチファイルを「 c:¥patch¥ 」というフォルダに格納した状態でインストールするコマンドは、以下の通りです。

wusa.exe c:¥patch¥Windows6.1-KB2425227-x64.msu /quiet /norestart /log:C:¥patch¥%COMPUTERNAME%_patch_log.evtx

  • wusa.exe
  • 更新プログラムを適用するコマンド

  • /quiet
  • Wusa.exeを実行すると、途中でユーザへの入力を求めて一時停止するが、このオプションによって、ユーザーによる操作を必要としない自動モードで実行する。バッチ処理で自動的にパッチを適用したい場合には、必ずこのオプションを付ける。(このオプションを付けないとユーザの入力を求められるため、処理が途中で一時停止)

  • /norestart
  • このコマンドを実行した後にWindowsを再起動させないオプション(このオプションを付けないと自動でWindowsが再起動)

  • Windows6.1-KB2425227-x64.msu
  • マイクロソフトのサイトからダウロードしたパッチファイル名(この例で使われたファイル名なので、適用したいパッチによってファイル名が異なります)

  • 「 c:¥patch¥ 」
  • パッチファイルを格納しているフォルダ名

  • /log
  • イベントログで確認できるへログファイルを出力するためのオプション

適用したコンピュータが判るログファイル名とするために、コンピュータ名をシステムから取得する「 %COMPUTERNAME% 」を付与したログファイル名にします。
/log:C:¥patch¥%COMPUTERNAME%_patch_log.evtx

「C:¥patch¥」配下に「(コンピュータ名)_patch_log.evtx」が作成される。

ログファイルの拡張子を「evtx」にするとイベントビューアが開く

ログファイルの拡張子を「evtx」としている理由は、適用されたパッチの適用結果を全てイベントビューア用データに集約するためです。

拡張子を「evtx」にすると、作成されたファイルである「〇〇.evtx」をダブルクリックすることで、直接イベントビューアを開くことができます。

また、他のイベントログと混在しないため、適用されたパッチの結果だけが集約されて、非常に見易くなります。

更新プログラムが適用されたか確認する手順

下記の記事にある手順で、更新プログラムの適用結果を確認します。

下記の記事で確認できるのは、適用の有無だけであって、適用されていない場合のエラーは、適用時に出力したイベントログファイル「(コンピュータ名)_patch_log.evtx」を開いて確認します。

Windowsに適用済みホットフィックス(hotfix)一覧を取得して確認するためにテキストでコマンド出力する方法






パッチ適用後の再起動の関する別のオプション

/norestartオプションを含めて、パッチ適用後の再起動に関するオプションは下記の通りです。

/norestart

Wusa.exeコマンドを実行した後にWindowsを再起動させないオプション(このオプションを付けないと自動でWindowsが再起動)

/warnrestart

Wusa.exeコマンドを実行した後にWindowsを再起動するか確認メッセージが表示されるオプション

/forcerestart

Wusa.exeコマンドを実行した後に強制的にアプリケーションが閉じられ再起動が開始されるオプション

更新プログラムのアンインストール

例えば、「KB3055664」というホットフィックスの更新プログラムをコマンドラインでアンインストールするコマンドは、以下の通りです。

wusa.exe /uninstall /kb:3055664 /quiet /norestart /log:C:¥patch¥%COMPUTERNAME%_patch_del.evtx

  • wusa.exe
  • 更新プログラムを適用するコマンド

  • /uninstall
  • アンインストールを実行させるオプション

  • /norestart
  • このコマンドを実行した後にWindowsを再起動させないオプション(このオプションを付けないと自動でWindowsが再起動)

  • /kb:3055664
  • 「KB3055664」というホットフィックスの更新プログラムをアンインストールする場合、この形式で記述(この例で使われたホットフィックス名なので、適用したいパッチによってホットフィックス名が異なります)

  • /log
  • イベントログで確認できるへログファイルを出力するためのオプション

バッチ処理で半自動に複数の更新プログラムを適用する方法

わざわざコマンドラインを打つのが面倒であったり、たくさんのバッチファイルを適用するとき、バッチ処理を作成し、半自動で更新プログラムのコマンドラインを実行できます。

バッチ処理で複数のパッチファイルをインストールする方法

以下の例は、「 Windows6.1-KB2425227-x64.msu 」と「 Windows6.1-KB2488227-x64.msu」の2つのパッチファイルをインストールするパッチ処理の例です。

バッチ処理を作成する手順

1)メモ帳を開いて、以下の「 — ここから 」〜「— ここまで」をコピーして貼り付けます。

2)「c:¥patch¥」の部分は、実際に自分が更新プログラムを格納するフォルダ名に変更します。

3)「 Windows6.1-KB2425227-x64.msu 」と「 Windows6.1-KB2488227-x64.msu」は、実際に適用する更新プログラムのファイル名に変更します。

4)もし、3つ目の更新プログラムを増やすなら、以下の通り「 echo “3” 」という「3つ目の更新プログラム」を示すように変更します。

Wusa.exe c:¥patch¥Windows6.1-KB249999-x64.msu /quiet /norestart/log:C:¥patch¥%COMPUTERNAME%_patch_log.evtx
echo “3”

バッチ処理の解説

  1. 「 echo “1の適用が完了” 」は、「いくつまでの更新プログラムのインストールが終わったか」を確認するためのものです。更新プログラムは適用に時間が掛かる場合があり、バッチ処理がどこまで進んでいるのか分かりやすくするためです。従って、更新プログラムの分だけ、カウントアップします。
  2. “Windowsパッチを適用しますか? (y or n):”は、誤ってバッチ処理を起動しても、処理をせず終了させるためです。
  3. 「pause」は、バッチ処理が終わったとき、メッセージが出てバッチ処理の最後で止めるものです。バッチ処理がそのまま終わると画面が消えてしまうので、エラー等を確認するため、最後でバッチ処理を一時停止させます。

— 「バッチ処理」はここから —
@echo off

set /p YORN=”Windowsパッチを適用しますか? (y or n):”
if not ‘%YORN%’==’y’ (
echo “Windowsパッチの適用を中止します”
GOTO END
) else (

Wusa.exe c:¥patch¥Windows6.1-KB2425227-x64.msu /quiet /norestart /log:C:¥patch¥%COMPUTERNAME%_patch_log.evtx
echo “1の適用が完了”

Wusa.exe c:¥patch¥Windows6.1-KB2488227-x64.msu /quiet /norestart /log:C:¥patch¥%COMPUTERNAME%_patch_log.evtx
echo “2の適用が完了”

echo “Windowsパッチの適用が完了しました”

)

:END

pause
— ここまで —






バッチ処理で複数の更新プログラムをアンインストールする方法

以下の例は、「 KB2425227 」と「 KB2499999」の2つのパッチファイルをアンインストールするパッチ処理の例です。

1)メモ帳を開いて、以下の「 — ここから 」〜「— ここまで」をコピーして貼り付けます。

2)「c:¥patch¥」の部分は、実際に自分が更新プログラムを格納するフォルダ名に変更します。

3)「 kb:2425227 」と「 kb:2499999 」は、実際にアンインストールする更新プログラムのKB番号を「 kb:(KB番号) 」に変更します。

 例えば、「 KB2425227 」なら「 kb:2425227 」と記載します。

4)もし、3つ目の更新プログラムを増やすなら、以下の通り「 echo “3” 」という「3つ目の更新プログラム」を示すように変更します。

wusa.exe /uninstall /kb:2411111 /quiet /norestart /log:C:¥patch¥%COMPUTERNAME%_patch_del.evtx
echo “3の削除が完了”

— 「バッチ処理」ここから —
@echo off

set /p YORN=”アンインストールしますか (y or n):”
if not ‘%YORN%’==’y’ (
echo “処理を中止します”
GOTO END
) else (

wusa.exe /uninstall /kb:2425227 /quiet /norestart /log:C:¥patch¥%COMPUTERNAME%_patch_del.evtx
echo “1の削除が完了”

wusa.exe /uninstall /kb:2499999 /quiet /norestart /log:C:¥patch¥%COMPUTERNAME%_patch_del.evtx
echo “2の削除が完了”

)

:END

pause
— ここまで —