【Windows】オフラインで更新プログラムを一括適用する方法

Windows Serverを構築する際、インターネットに接続する前に更新プログラム(hotfix)を適用することを求められる場合があります。
以下ではWindowsに必要な更新プログラムを検索し、 オフライン状態で一括適用する手順をお伝えします。

※ツールを取得するためにオンラインのPCが別途必要です。

必要な更新プログラムを検索する

必要な更新プログラムを検索する手順を確認します。
※以下で紹介するキャビネットファイル・スクリプトはMicrosoft公式ページより引用しました。

Wsusscn2.cabの入手

Wsusscn2.cabはMicrosoftが配布しているキャビネットファイルで、セキュリティ関連の更新プログラムに関する情報が含まれています。
以下からダウンロードできます。

http://download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab

オフラインスキャンスクリプトの作成

オフラインスキャンに用いるスクリプトを作成します。
以下をコピペしてofflinescn.vbsとして保存してください。

Set UpdateSession = 
CreateObject("Microsoft.Update.Session")
Set UpdateServiceManager = CreateObject("Microsoft.Update.ServiceManager")
Set UpdateService = UpdateServiceManager.AddScanPackageService("Offline Sync Service", "c:\wsusscn2.cab", 1)
Set UpdateSearcher = UpdateSession.CreateUpdateSearcher()
​
​
WScript.Echo "Searching for updates..." & vbCRLF
​
​
UpdateSearcher.ServerSelection = 3 'ssOthers
​
​
UpdateSearcher.ServiceID = UpdateService.ServiceID
​
​
Set SearchResult = UpdateSearcher.Search("IsInstalled=0")
​
​
Set Updates = SearchResult.Updates
​
​
If searchResult.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
    WScript.Quit
End If
​
​
WScript.Echo "List of applicable items on the machine when using wssuscan.cab:" & vbCRLF
​
​
For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next
​
​
WScript.Quit

以上2ファイルをUSBやDVDROMなどのメディアに格納したら、サーバのCドライブにコピーしてください。
※格納先のパスは任意ですが、例から変更する際はスクリプト3行目のパスを修正してください。

オフラインスキャンを実行する

サーバに配置後、コマンドプロンプトを開き以下を実行します。 パスは実際の配置に合わせて修正してください。

cscript C:\offlinescn.vbs

処理が完了すると、コマンドプロンプトに不足している更新プログラムの一覧が表示されます。
メモ帳などに控えておいてください。

更新プログラムを取得する

検索結果をもとに、Windows Update Catalogから更新プログラムをダウンロードします。

Microsoft Update Catalog

検索窓に先ほど取得した更新プログラムの型番を打ち込み検索します。
構築するサーバのOSにあった更新プログラムをダウンロードしてください。
Windows Server 2019であれば画像中段のものとなります。

検索した更新プログラムをすべてダウンロードしたら、「UpdatePatch」フォルダを作成し格納します。

一括適用バッチを作成する

以上でダウンロードした更新プログラムを1つ1つクリックしてインストールするのは大変なので、バッチファイルを用いて一括で適用します。

以下をbulk-application.batとして保存します。

@echo off
cd /d %~dp0

for /f %%a in ('dir /b *.msu') do (
echo %%a インストール中
call %%a /quiet /norestart
)

pause
exit

このスクリプトには、同じディレクトリにある拡張子が.msuであるファイルを一つずつ実行する処理が記述されています。
「/quiet」オプションは実行中に問われる選択肢にすべてyで回答するオプション、「/norestart」オプションは実行完了後に自動で再起動しないようにするためのオプションです。

作成したバッチファイルを先ほど作成したUpdatePatchフォルダの中に格納します。

以上をメディアに格納したら、サーバのCドライブにコピーしてください。

更新プログラムを一括適用する

以上で準備した更新プログラムをサーバにインストールします。

batファイルの実行

UpdatePatchフォルダをサーバに配置後、bulk-application.batをダブルクリックして実行します。
処理が完了したら、必ず再起動をしてください。

適用された更新プログラムの確認

手順1のオフラインスキャンを再度実行し、更新プログラムが表示されなければ適用完了です。
適用された更新プログラムの履歴は、

設定 > 更新とセキュリティ > Windows Update

「更新の履歴を表示する」から確認することができます。

また、以下のPowershellコマンドより確認することも可能です。

Get-HotFix

手順は以上です。おつかれさまでした!

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