LoginSignup
2
3

More than 5 years have passed since last update.

Hyper-V 仮想マシンのオフラインパッチ適用

Last updated at Posted at 2017-03-14

Windows 10 / Windows Server 2016 では更新プログラムが累積的な更新プログラム(CU)として提供されるようになり、適用状態の管理はしやすくなったものの Windows Update からアップデートを実行するとネットワークが異常に重くなることがあります。自宅の仮想環境でしばしばありました。

Windows Update でアップデートするのではなくて、Microsoft Update Catalog から CU をダウンロードしてきてローカルで適用したほうがネットワークを圧迫せず、結果的に適用も早く終わったので、なるべくオフラインでアップデートするようにしてます。仮想マシン上に CU を配置してダブルクリックして適用しても良いのですが、せっかくなのでオフラインで適用する PowerShell スクリプトを作ってみました。

最新 CU のダウンロード

Hyper-V への OS インストールが終わったら、最新の CU をダウンロードします。最新の CU はここから確認できます。

Windows 10 および Windows Server 2016 の更新履歴

上記のページで KB 番号を確認したら、Microsoft Update Catalog から検索して該当の CU をダウンロードします。

Microsoft Update Catalog

ダウンロードしたファイルは Hyper-V サーバーの適当な場所に置いておきます。

オフラインパッチ適用

CU の適用には DISM を使います。VHD をマウントして CU を適用してコミットしてアンマウントする、という一連の流れを簡単ですが PowerShell スクリプト化します。

offlinePatch.ps1
param(
    [Parameter(Mandatory=$true)]
    [string]
    $VhdPath,

    [Parameter(Mandatory=$true)]
    [string]
    $MountDirectory,

    [Parameter(Mandatory=$true)]
    [string]
    $UpdateFilePath
)

DISM /Mount-Image /ImageFile:$VhdPath /Index:1 /MountDir:$MountDirectory
DISM /Image:$MountDirectory /Add-Package /PackagePath:$UpdateFilePath
DISM /Unmount-Image /MountDir:$MountDirectory /Commit

\$VhdPath には仮想マシンの VHD ファイルのパスを、\$MountDirectory にはマウント用のフォルダーを、\$updateFilePath には Microsoft Update Catalog からダウンロードしてきた更新プログラムファイルのパスを指定します。(ファイルを Shift キーを押しながら右クリックして「パスのコピー」を選択すると簡単にフルパスがコピーできます)マウント用のフォルダーは適当に空のフォルダーを作って指定してやれば OK です。仮想マシンはシャットダウンしておいてください。

.\offlinePatch.ps1 -VhdPath <vhd ファイルのパス> -MountDirectory <マウント用フォルダーのパス> -UpdateFilePath <更新プログラムファイルのパス>

CU はサイズが大きいので適用には時間がかかります。お茶でも飲んで待ちましょう。当たり前ですが壊れたら困る仮想マシンの場合は適用前に VHD のバックアップを取っておきましょう。

まとめ

累積的な更新プログラムになってサーバー管理者的には管理しやすくなって良いのですけど、もうちょい安定するとよいですな。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3