見出し画像

【インフラ】Sysprepでの応答ファイル(unattend.xml)導入ガイド【Windows11】


前回のブログ

前回はsysprep周りと、その時に発生するエラーなどをご紹介しました。
今回は応答ファイルを中心にまとめました。とは言っても、応答ファイルの設定方法はすでに諸先輩方がすばらしい記事をたくさん上げています。そこで、各構成パスの少し深いところも解説しながら、まとめていきたいと思います。
なお、各項目ともに検証中のところも多いです。ご利用は自己責任でお願いします。また、本記事の内容は特に通知なく変更する場合もあります。

1. 応答ファイル導入の意味

SysprepはWindowsのシステムイメージを一般化するツールであり、複数のコンピューターに同一のイメージを展開する際に使用されます。しかし、Sysprepだけでは初回起動時の設定(OOBE:Out-Of-Box Experience)を自動化できません。ここで応答ファイル(unattend.xml)を使用することで、初期設定を自動化し、展開作業を大幅に効率化できます。

主なメリットをまとめるとこのようになります。

  • 手動入力の削減:ユーザーアカウント作成やライセンス条項の承認などを自動化。

  • 一貫性の確保:全ての展開先で同一の設定を適用。

  • 時間の短縮:初期設定にかかる時間を削減。

2. 必要なツールの準備

Windows System Image Manager(Windows SIM)のインストール

Deployment Tools をインストールする。それ以外は必要に応じてインストールしてください。

インストール作業については下記のサイトなどをご参照ください。


このような画面が表示されれば成功です。


①左のWindowsイメージの中にある「コンポーネント」を右クリックし、応答ファイルウィンドウにある「構成パス」に適用していきます。

②具体的には一番右のプロパティで設定します。

何をどう設定したいか?

事前に考慮しておきたい点として、どのような設定にするかを明確にする必要があります。今回は仮に以下のような設定にします。
・地域と言語の設定などの初期セットアップ画面はスキップする。
・ユーザーアカウントは管理者アカウント(Administrator)、標準ユーザーのアカウントを一つずつ作成する。
・設定の関係で、初回起動は管理者アカウントでオートログインする
といったことを明確にしておきます。

3. 前提知識

具体的な設定に入る前に、各構成パスをまとめておきます。どの工程で何が行われているかが重要なのです。

①windowsPE(インストールの初期段階)

ディスクのパーテーション設定、インストール画面やWindows PEのインターフェースが指定した言語や地域設定に合わせられます。言語設定をするコンポーネントは下記二つありますが、公式的にはここで設定するのがおススメのようです(私は両方で設定しました。)
Microsoft-Windows-International-Core-WinPE. (言語設定は、windowsPE 構成パス中に適用されます)。
Microsoft-Windows-International-Core. specialize または oobeSystem パス中に適用される言語設定。

②offlineServicing(オフラインでのサービス適用)

インストールプロセスの途中で、オフラインのWindowsイメージに対して更新プログラムやドライバーを適用します。
今回は設定なし

③generalize(一般化)

Windowsのシステムイメージを一般化し、固有の情報(SID、ドライバー、デバイス固有情報など)を削除するフェーズです。個別のデバイス情報が削除されることで、システムが複製される準備が整います。

④specialize(特定の設定の適用)

このフェーズでは、イメージが展開されるデバイス固有の設定(ネットワーク設定、コンピューター名の指定、ドメイン参加など)を適用します。
Windowsが固有の環境に対応するためのカスタマイズが行われ、必要なハードウェアやネットワークの構成が完了します。一般的にはイメージを展開して、新しいマシンで一番最初に再起動が行われるタイミングです。

⑤oobeSystem(OOBEでの初期設定)

OOBE(Out-of-Box Experience)は、specialize後、ユーザーアカウントの作成、ライセンス条項の承諾、タイムゾーン、言語、地域設定などが行われます。oobeSystemの構成パスを構築することで、この辺を省略する設定を施すことができます。
「ようこそ」画面やデスクトップが表示されると、すべてのOOBE設定が完了したことがわかります。

⑥それ以外の構成パス

auditSystem、auditUserという構成パスがあります。これらは監査モードで使用するものなので、あまり使用しないかと思います。ここでは解説を省略します。

公式に構成パスの仕組みが図で解説されています。しかし詳細は分かりにくい…

4. 設定

では、具体的に設定をしていきましょう。なお、これはあくまで設定例ですので、各企業、ユーザーごとに異なるものであることをご了承ください。

また、すべての構成パスを使うわけではありません。使うのは主に、generalize、specialize、oobeSystemあたりです。とはいえ、結構大変ですけど。

「Windowsイメージ」のウィンドウから、以下のコンポーネントを右クリックで選択し、「応答ファイル」ウィンドウに構成パスを追加していきます。

①windowsPE

コンポーネント:amd64_Microsoft-Windows-International-Core-WinPE_<XXX>_neutral

※以下、_<XXX>_にはバージョンの数字が入りますが、気にしないで大丈夫です。

設定内容

代表的なプロパティ

  • InputLocale:0411:E0010411
    キーボード レイアウトなど、入力デバイスの入力言語と入力方式を指定するプロパティです。日本の設定は  0411:E0010411です。

  • LayeredDriver:6
    キーボード ドライバーを指定するプロパティです。日本語キーボード (106/109 キー) は6になります。

②generalize

  • コンポーネント①:amd64_Microsoft-Windows-PnpSysprep_<XXX>_neutral

設定内容

代表的なプロパティ

PersistAllDeviceInstalls , DoNotCleanUpNonPresentDevices
デバイスのプラグ アンド プレイ情報をコンピューターに保持するかどうかを指定します。Trueにすると保持されます。Sysprep を実行したあとでデバイスドライバが抜け落ちてしまう症状があるのですが、それを防ぐためにTrue に設定します。 

  • コンポーネント②:amd64_Microsoft-Windows-PnpSysprep_<XXX>_neutral

設定内容

代表的なプロパティ

SkipRearm:1
今はほぼ設定の必要なくなったようですが、コンピューターを一般化するときに Windows のライセンス状態をリセットするかどうかを指定します。Windows7の時はSysprepでWindows をリセットできる回数が3回だったため、これを設定する必要があったのですが、Windows10,11では1000回まで上限が増えてほぼ無制限になりました。

③specialize

コンポーネント:amd64_Microsoft-Windows-Shell-Setup_<XXX>_neutral

代表的なプロパティ

  • Computer Name:* 
    *にすると任意でComputerNameが割り当てられます。この値の重複は良くないので、*などで設定しておくのがいいです。 

  • CopyProfile:True
    現在のユーザープロファイル(通常はビルトインの Administrator)がデフォルトのユーザープロファイルとしてコピーされます。デフォルトユーザープロファイルを変更することで、次回、ユーザーアカウントを作成すると、カスタマイズされた設定が反映されます。

  • ProductKey:ボリューム ライセンス マルチ ライセンス認証キー (MAK) を使用している場合は指定します。

  • RegisteredOrganization →組織名を入力、RegisteredOwner →使用者名を入力、TimeZone→Tokyo Standard Time  


それ以外の設定

④OOBESystem

  • コンポーネント①:amd64_Microsoft-Windows-International-Core_neutral
    ここではWindowsPEの構成パスと同じ設定を行います。

WindowsPE と同じ設定
  • コンポーネント②:amd64_Microsoft-Windows-Shell-Setup_neutral
    TimeZone→Tokyo Standard Time  

  • コンポーネント③:amd64_Microsoft-Windows-Shell-Setup_neutral/autologon

autologon

通常、ビルトインAdministratorはsysprep実行後に無効となりますが、Autologonで指定することで有効になります。ただ、Administratorの管理者パスワードはしっかり設定しましょう。
LogonCountはSysprep 後に再起動する回数を指定します。

  • コンポーネント④:amd64_Microsoft-Windows-Shell-Setup_neutral/OOBE

HideEULAPage:Microsoft ライセンス条項のページを非表示にするかどうかです。Trueにすると非表示になります。それ以外の項目もtrueにすることで初期設定を非表示にできます。

コンポーネント⑤:amd64_Microsoft-Windows-Shell-Setup / UserAccounts

LocalAccountsを右クリックし、新しく生成する。

ここでは、ユーザーアカウントの生成ができます。その際、Groupのプロパティに対しては下記のような選択肢を入れることでユーザーごとの権限を設定することができます。

  1. Name
    説明: アカウントのユーザー名を指定します。
    例: <Name>AdminUser</Name>

  2. Group
    説明: ユーザーが所属するグループを指定します。

Administrators: 管理者権限を持つユーザーグループ。システム管理操作が可能です。
Users: 標準ユーザーグループ。基本的な操作が可能ですが、管理者権限はありません。

この項目についてはXMLで例文を記載しておきます。

<settings pass="oobeSystem">
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
        <UserAccounts>
            <LocalAccounts>
                <!-- ビルトインAdministratorアカウントの設定 -->
                <LocalAccount wcm:action="add">
                    <Name>Administrator</Name>
                    <Group>Administrators</Group>
                    <Password>
                        <Value>AdminPassword123</Value>
                        <PlainText>true</PlainText>
                    </Password>
                </LocalAccount>

                <!-- カスタム管理者アカウント -->
                <LocalAccount wcm:action="add">
                    <Name>AdminUser</Name>
                    <Group>Administrators</Group>
                    <Password>
                        <Value>AdminUserPassword123</Value>
                        <PlainText>true</PlainText>
                    </Password>
                </LocalAccount>

                <!-- 標準ユーザーアカウント -->
                <LocalAccount wcm:action="add">
                    <Name>StandardUser</Name>
                    <Group>Users</Group>
                    <Password>
                        <Value>StandardUserPassword123</Value>
                        <PlainText>true</PlainText>
                    </Password>
                </LocalAccount>
            </LocalAccounts>
        </UserAccounts>
    </component>
</settings>

コンポーネント⑥:amd64_Microsoft-Windows-Shell-Setup / FirstLogonCommands
この設定は、ユーザーが初回ログインした際に、自動でコマンドやスクリプトを実行するために使用します。実行したいバッチファイルなどがあればここで設定します。実行したいバッチファイルをCドライブのSetupフォルダなどに配置しておくといいでしょう。
今回は特にその手のファイルがなかったので、参考までにxmlファイルのコードを載せておきます。

<settings pass="oobeSystem">
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
        <FirstLogonCommands>
            <SynchronousCommand wcm:action="add">
                <Order>1</Order>
                <CommandLine>C:\Setup\myscript.bat</CommandLine>
                <Description>初回ログイン時にバッチファイルを実行</Description>
            </SynchronousCommand>
        </FirstLogonCommands>
    </component>
</settings>

5. 応答ファイルの保存

エラーチェックも忘れずに。
保存する際に、Windows SIMが応答ファイルにエラーがないかを自動的に検証します。エラーがある場合は、右下にエラーメッセージが表示されるので、指示に従って修正します。

エラーチェック後、Windows SIMのメニューから「ファイル」→「名前を付けて保存」を選択し、C:\Windows\System32\Sysprep\フォルダにunattend.xmlという名前で保存します。ここに保存しておけば、自動で応答ファイルが適用されます。

ここから先は

3,653字 / 2画像

¥ 100

この記事が気に入ったらチップで応援してみませんか?