以下が記事本文です。


ADK と SIM を使って応答ファイルを作成し、Sysprep 実行後の構成を自動化する

この記事の内容

  • Windows ADK(Assessment and Deployment Kit)の「Deployment Tools」をインストールして Windows システムイメージマネージャー(SIM)を起動する手順を解説します
  • SIM を使い、日本語ロケール・タイムゾーン・プロダクトキー・EULA 承諾・Administrator パスワードなどを盛り込んだ応答ファイル(Unattend.xml)を作成します
  • 作成した応答ファイルを Sysprep 実行時に指定することで、仮想マシンの初回起動(OOBE)を完全に自動化する方法を紹介します
  • 応答ファイルの配置先や Sysprep コマンドの引数についても具体的に説明します
  • 複数の仮想マシンを展開する際に毎回手動設定が不要になり、ゴールデンイメージ運用が大幅に効率化されます

応答ファイルとは

前回は Sysprep の基本的な使い方を解説しました。今回はさらに一歩進めて、応答ファイル(Unattend.xml) を作成します。

応答ファイルとは、Sysprep 済みのイメージを初回起動(OOBE: Out-of-Box Experience)した際に自動的に読み込まれる設定ファイルです。これを使うことで次のような項目を無人で構成できます。

  • PC 名の設定
  • Administrator パスワードの設定
  • ライセンス(EULA)の自動承諾
  • 言語・ロケール・タイムゾーンの設定
  • プロダクトキーの入力

応答ファイルを活用することで、Sysprep 済みイメージから何も入力せずに使える状態まで自動的に持っていくことが可能になります。


Windows ADK のインストール

応答ファイルを作成するには Windows ADK(Windows Assessment and Deployment Kit) が必要です。

ADK は、Windows イメージの大規模展開向けカスタマイズや、アプリケーションのパフォーマンステストなど多岐にわたる機能を持つツールキットです。Windows Server 2022 にも対応しています。

Microsoft の公式サイトから ADK のインストーラーをダウンロードし、実行します。機能の選択画面では、応答ファイルの作成に必要な以下のコンポーネントのみを選択します。

  • Deployment Tools(Windows イメージのカスタマイズ管理とインストール自動化のためのツール)

その他のコンポーネントはチェックを外しても問題ありません。必要なコンポーネントのみで約 99 MB 程度のサイズになります。

インストールが完了すると、Windows システムイメージマネージャー(WSIM: Windows System Image Manager) が使えるようになります。


Windows システムイメージマネージャーの準備

WSIM を起動したら、最初に Windows のイメージファイルを読み込む必要があります。

ISO ファイルをドライブにマウントしている場合、その中に含まれる install.wim を利用します。ただし、このファイルは直接 WSIM から参照するのではなく、あらかじめローカルの作業フォルダにコピーしておくことを推奨します。

:D:\Images\install.wim

WSIM の「Windows イメージの選択」から、コピーした install.wim を指定します。

イメージファイルを読み込むと、WSIM がイメージの内容を解析し、カタログファイル(.clg) を生成します。このカタログファイルには「このイメージでどのような項目が設定可能か」という情報が含まれており、応答ファイルの作成に使用されます。解析には数分程度かかります。


応答ファイルの作成

解析が完了したら、WSIM の「応答ファイル」ペインで「新しい応答ファイル」を作成します。

以下の項目を順に設定していきます。

言語・ロケールの設定

OOBE の最初の画面(国・地域・言語・キーボードレイアウトの選択)に対応する設定です。

対象コンポーネント:

amdP6a4s_sM:icroobseoSfyts-tWeimndows-International-Core

各プロパティを以下のように設定します。

プロパティ設定値説明
InputLocale0411:00000411キーボードレイアウト(日本語)
SystemLocaleja-JPシステムロケール(日本)
UILanguageja-JP表示言語
UserLocaleja-JPユーザーロケール

タイムゾーンの設定

対象コンポーネント:

amdP6a4s_sM:icroobseoSfyts-tWeimndows-Shell-Setup
プロパティ設定値
TimeZoneTokyo Standard Time

プロダクトキーの設定

対象コンポーネント:

amdP6a4s_sM:icsrpoescoifatl-iWziendows-Shell-Setup
プロパティ設定値
ProductKey(使用するプロダクトキーを入力)

KMS 環境や Azure 等ライセンス認証サーバーが別途用意されている環境では、プロダクトキーの入力が不要な場合もあります。

EULA(使用許諾)の自動承諾

対象コンポーネント:

amdP6a4s_sM:icroobseoSfyts-tWeimnd>owOsO-BSEhell-Setup
プロパティ設定値
HideEULAPagetrue

Administrator パスワードの設定

対象コンポーネント:

amdP6a4s_sM:icroobseoSfyts-tWeimnd>owUss-eSrhAeclclo-uSnettsup>AdministratorPassword
プロパティ設定値
Value(設定したいパスワードを入力)

パスワードは XML 上に平文で書くことも動作上は可能ですが、セキュリティの観点から WSIM ツールを使って設定することを推奨します。

コンピューター名の設定

複数の仮想マシンに同一の応答ファイルを使い回す場合は、コンピューター名を * に設定することで自動生成させることができます。

amdP6a4sC_soM:mipcsurptoeescroiNfaatlm-ieWz:iendows-Shell-Setup

展開後に個別に設定したい場合もこの方法が適しています。


応答ファイルの保存と確認

設定が完了したら、WSIM のメニューから「応答ファイルを保存」を選択します。

:win2022_answerfile.xml

保存された XML ファイルを開くと、以下のような構造になっています。

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" ...>
            <InputLocale>0411:00000411</InputLocale>
            <SystemLocale>ja-JP</SystemLocale>
            <UILanguage>ja-JP</UILanguage>
            <UserLocale>ja-JP</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" ...>
            <TimeZone>Tokyo Standard Time</TimeZone>
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
            </OOBE>
            <UserAccounts>
                <AdministratorPassword>
                    <Value>(エンコードされたパスワード)</Value>
                    <PlainText>false</PlainText>
                </AdministratorPassword>
            </UserAccounts>
        </component>
    </settings>
    <settings pass="specialize">
        <component name="Microsoft-Windows-Shell-Setup" ...>
            <ComputerName>*</ComputerName>
            <ProductKey>(プロダクトキー)</ProductKey>
        </component>
    </settings>
</unattend>

Administrator パスワードは平文ではなくエンコードされた状態で保存されます。


応答ファイルの配置と Sysprep の実行

作成した応答ファイルを、Sysprep を実行する仮想マシン内の以下のパスに配置します。

C:\Windows\System32\Sysprep\win2022_answerfile.xml

ファイルの転送はクリップボードのテキスト入力・ネットワーク共有・ファイルコピーなど、どの方法でも構いません。内容が正しければ問題なく動作します。

ファイルを配置したら、「ファイル名を指定して実行」から以下のコマンドを実行します。

C:\Windows\System32\Sysprep\sysprep.exe/generalizeobe/shutdown/unattend:win2022_answerfile.xml

各引数の意味は以下の通りです。

引数説明
/generalizeシステム固有情報(SID 等)を削除して一般化する
/oobe次回起動時に OOBE モードで起動する
/shutdownSysprep 完了後にシャットダウンする
/unattend:ファイル名使用する応答ファイルを指定する

なお、応答ファイルは Sysprep 実行後に削除されます。必要であれば別の場所にバックアップを保持しておいてください。


動作確認

Sysprep が完了してシャットダウンしたら、このイメージをゴールデンイメージとして保存しておきます。

このゴールデンイメージから仮想マシンを起動すると、初回起動時の各種設定画面(言語選択・キーボード設定・ライセンス承諾・パスワード設定など)がすべてスキップされ、何も入力せずにデスクトップが起動することを確認できます。

応答ファイルで設定した Administrator パスワードでログインでき、Sysprep 前に施した設定(例: IE セキュリティ強化設定の無効化など)も引き継がれた状態になっていれば、応答ファイルが正しく適用されています。


まとめ

今回は Windows ADK に含まれる Windows システムイメージマネージャー(WSIM)を使って応答ファイル(Unattend.xml)を作成し、Sysprep と組み合わせて仮想マシンの初回セットアップを完全自動化する手順を解説しました。

  • Windows ADK の Deployment Tools をインストールすることで WSIM が使えるようになります
  • WSIM は install.wim を読み込み、そのイメージで設定可能な項目をカタログとして解析します
  • 応答ファイルには日本語ロケール・タイムゾーン・EULA 承諾・パスワード・コンピューター名などを設定できます
  • Sysprep 実行時に /unattend オプションで応答ファイルを指定することで、次回起動から完全無人セットアップが実現できます
  • ゴールデンイメージと応答ファイルを組み合わせることで、複数の仮想マシンを効率よく展開できる環境が整います

次回は Ansible を使って、テキストファイルに記述した設定(ホスト名・ネットワーク設定など)から仮想マシンをさらに自動構成する方法を紹介する予定です。