DISM を用いて WIM ファイルを管理する (ソフトウェア更新プログラム適用編)

皆さん、おはようございます。

今回は、OS 展開管理ネタです。Configuration Manager (Microsoft Endpoint Configuration Manager (MECM) (旧 SCCM), Microsoft Configuration Manager) 関連のネタです。

Configuration Manager にて、OS 展開を行う際に用いる、WIM (Windows image) ファイルに、ソフトウェア更新プログラム (セキュリティ更新プログラム) (LCU : Latest Cumulative Update) を適用して、WIM ファイルを最新化させようという話題です。

なぜ、この話題を最近取り上げているかというと、KB5004442 (CVE-2021-26414) への対応のためです。具体的には、2023 年 3 月リリース予定のソフトウェア更新プログラムを証明書サーバー (Active Directory Certificate Services : AD CS) に適用すると、DCOM Server のセキュリティ強化により、対応していない Windows クライアントからの証明書要求を拒否するためです。今日現在 (2023/02/21) は、まだレジストリ値を変更することにより、古い方式を使える代替案があります。ただし、2023 年 3 月リリース予定のソフトウェア更新プログラムをサーバーに適用すると、レジストリ値を変更していようが、設定が強制化 (強制フェーズ) が始まります。そのため、その前にクライアント OS のソフトウェア更新プログラム (セキュリティ更新プログラム) レベルを上げておく必要があります。

これは、組織内に存在する Windows クライアントもそうですが、新しく OS 展開を行う WIM ファイルも同様です。このため、WIM ファイルの更新をする必要があります。

今回は、Enterprise Edition でまだサポートがある Windows 10 version 20H2 の WIM ファイルを基に紹介したいと思います。

<前提条件>

作業用 PC もしくはサーバーに Windows ADK がインストールされていること

WIM ファイル (今回は、Windows 10 version 20H2)

LCU (今回は 2023-02 x64 ベース システム用 Windows 10 Version 20H2 の累積更新プログラム (KB5022834))

<実際の手順>

  1. まず、作業フォルダーを作成します。
    “E:\temp\WIM_Update”
    “E:\temp\WIM_Update\LCU”
    “E:\temp\WIM_Update\log”
    “E:\temp\WIM_Update\mount”
    “E:\temp\WIM_Update\WIM”
  2. WIM フォルダーに更新予定の WIM ファイルをコピーします。(install-3-Windows-10-Enterprise.wim)
  3. 適用対象のソフトウェア更新プログラム (セキュリティ更新プログラム) をダウンロードして、LCU フォルダーに格納しておきます。(2023-02 x64 ベース システム用 Windows 10 Version 20H2 の累積更新プログラム (KB5022834), windows10.0-kb5022834-x64_c58d091338b26bbd3ee10a733681bd3eca8c48ab.msu)
  4. スタート メニューから、[Windows Kits] 内にある [展開およびイメージング ツール環境] を [管理者として実行] を選択します。
  5. まず、下記のコマンドにて WIM ファイルの状態を確認します。
    Dism /Get-WimInfo /WimFile:"E:\temp\WIM_Update\WIM\install-3-Windows-10-Enterprise.wim"


    ※ 今回の WIM ファイルは、インデックスが 1 つです。これが複数ある場合は後述の手順の Index の数字を適宜変えてください。

  6. WIM ファイルをマウントします。
    Dism /Mount-Image /ImageFile:"E:\temp\WIM_Update\WIM\install-3-Windows-10-Enterprise.wim" /Index:1 /MountDir:"E:\temp\WIM_Update\mount"
  7. 次に、準備しておいた、ソフトウェア更新プログラム (LCU : Latest Cumulative Update) を適用します。
    Dism /Image:"E:\temp\WIM_Update\mount" /Add-Package /PackagePath:"E:\temp\WIM_Update\LCU\windows10.0-kb5022834-x64_c58d091338b26bbd3ee10a733681bd3eca8c48ab.msu" /LogPath="E:\temp\WIM_Update\log\Apply_LCU.log"

    上記コマンドを実行しても、下記のように 0x800f0823 エラーが表示されることがありますが、再度、同じコマンドを実行してください。

    ※ また、進捗ゲージが 100 % になってから、数分かかるので、お待ちください。
    ※ マシン スペックにもよりますが、47 分程度かかりました。(2.4 GHz 8 コア環境)

  8. ソフトウェア更新プログラム (LCU : Latest Cumulative Update) 適用後に、Cleanup-Image を用いて、置き換えられたコンポーネントをクリーンアップします。具体的には、最新のソフトウェア更新プログラムを適用したことにより、過去の状態に戻せる (ソフトウェア更新プログラムをアンインストールできる) ように、冗長に WIM ファイルに記録されます。それを削除して WIM ファイルのサイズを軽減します。その代わりに、今回適用したソフトウェア更新プログラムを削除することはできません。WIM ファイルなので、マスター イメージとして利用するため、ソフトウェア更新プログラムのアンインストールのシナリオは無いと判断して今回はクリーンアップします。
    https://learn.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/dism-operating-system-package-servicing-command-line-options?view=windows-11#cleanup-image

    Dism /Image:"E:\temp\WIM_Update\mount" /Cleanup-Image /StartComponentCleanup /ResetBase
  9. WIM をアンマウントします。
    Dism /Unmount-Image /MountDir:"E:\temp\WIM_Update\mount" /Commit
  10. その後、WIM を圧縮するため、Export-Image を用います。
    Dism /Export-Image /SourceImageFile:"E:\temp\WIM_Update\WIM\install-3-Windows-10-Enterprise.wim" /SourceIndex:1 /DestinationImageFile:"E:\temp\WIM_Update\WIM\install-3-Windows-10-Enterprise_v2.wim" /Compress:max

    https://learn.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/dism-image-management-command-line-options-s14?view=windows-11#export-image

  11. あとは、エクスポートしたイメージを Configuration Manager に登録すれば完了です!

<まとめ>

今回は、DISM コマンドを用いた WIM ファイルの管理方法をご紹介しました。

WIM ファイルの更新はなかなか実施しないかもしれませんが、今回の方法を用いて、WIM ファイルの更新を実施してみてください。理想は定期的に更新ですが。。。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする