OOBE完全スキップに必要な応答ファイル(Unattend.xml)設計

OOBEとは「Out-Of-Box Experience」の略で、初回にPCの電源を入れた後に表示される、言語と地域やネットワーク設定を行う画面のことです。

PCを購入したことがある人は誰しも一度は経験したことがあるでしょう。

そんなOOBEは1台だけであれば何ら問題はありませんが、情シスや社内SEなど、複数のPCをキッティングする人にとっては毎回鬱陶しい画面です。

なおかつ、複数台同時に作業していると抜けや漏れが発生しやすくなり、差異が生まれてしまう可能性もある厄介なもの。

そういった問題を解決してくれるのが、タイトルにもある「応答ファイル(Unattend.xml)」になります。

本記事では、OOBEを完全にスキップするために必要な応答ファイルの設計部分について詳しく解説していきます。

最終的には、読者のあなたが応答ファイルを自由に設計できるようになることが目標です。

本記事は以下の方におすすめ

・Sysprepした後のOOBE画面を完全スキップさせたい
・Windowsをクリーンインストールした後のOOBE画面を完全スキップさせたい

目次

事前準備

応答ファイルを設計するにあたり、以下のものが必要となります。

  • Windows SIM(Windowsシステムイメージマネージャー)
  • ISOファイル
  • カタログファイル

①Windows SIMのインストール

応答ファイルは「Windows SIM」というツールを用いて設計していきます。

Windows SIMは「Windows ADK(Windowsデプロイメントキット)」に含まれているツールになります。

そのため、まずは「Windows ADK」をダウンロードしましょう。

「Windows SIM」の詳細なインストール方法については割愛します。

②OSイメージファイル(install.wim)の取得

OSイメージファイルとは、Windowsのインストールに必要なOS本体が格納されたイメージファイルのことです。

次の③で述べるカタログファイルを取得するために必要となります。

install.wimはISOファイル内に存在しているため、Microsoftの公式サイトからダウンロードします。

③カタログファイルの取得

カタログファイルとは、該当のWindowsで設定可能な応答ファイルの設定項目を含んだファイルのことです。

Windows SIMを開いてinstall.wimを選択すると作成してくれます。
詳しい取得方法については割愛します。

応答ファイルの設計

では、実際に設計していきます。

まずは応答ファイルの全体像についてですが、Windows SIMを開いた中央部分がそれに該当します。

image.png

上図にもある通り、具体的には以下の7つの項目から構成されています。

  1. windowsPE
  2. offlineServicing
  3. generalize
  4. specialize
  5. auditSystem
  6. auditUser
  7. oobeSystem

OOBE完全スキップにて使用するのは、以下の3項目です。

  • 1 windowsPE
  • 4 specialize
  • 7 oobeSystem

1 windowsPE

windowsPEは、WindowsPE(プレインストール環境)で実行される設定項目のこと。

例えば、以下のような設定が行えます。

  • ディスクパーティション作成
  • install.wim の適用先指定
  • プロダクトキー入力
  • インストールイメージ選択

4 specialize

specializeは、Windowsが初回起動した直後に実行される設定項目のこと。

OOBE完全スキップには必須ではありませんが、次のoobeSystemとセットにすることが多いです。

具体的には以下の設定が行えます。

  • コンピューター名
  • ドメイン参加
  • ネットワーク設定
  • タイムゾーン
  • レジストリ設定

7 oobeSystem

oobeSystemは、OOBE実行時の設定項目のこと。
OOBE完全スキップに必須の設定となります。

例えば以下の設定が行えます。

  • 地域設定
  • キーボード設定
  • Microsoftアカウント作成
  • プライバシー設定

イメージとして、各設定項目は以下のような流れで処理が実行されていきます。

WindowsPE起動
↓
windowsPEの設定実行
↓
初回起動
↓
specializeの設定実行
↓
再起動
↓
OOBE起動
↓
oobeSystemの設定実行
↓
初回ログオン

では、細かい設計部分について、それぞれの項目にセットするコンポーネントについて解説していきます。※最低限必要な設定部分のみとなります

windowsPE設計

大分類として、以下のコンポーネントをセットします。

image.png
  • amd64_Microsoft-Windows-International-Core-WinPE_neutral
    ⇒WinPE段階における言語・地域設定
  • amd64_Microsoft-Windows-Setup_neutral
    ⇒Windowsセットアップそのものの動作を制御

では、それぞれの細かな設計部分について解説していきます。

amd64_Microsoft-Windows-International-Core-WinPE_neutral

image.png
image.png
スクロールできます
設定名内容設定値意味
InputLocaleキーボードの入力方式0411:00000411日本語キーボード
LayeredDriver特殊キーボード用ドライバ設定空白
SystemLocaleUnicode非対応アプリ用の言語設定ja-JP日本語
UILanguageWindowsセットアップ画面の表示言語ja-JP日本語
UILanguageFallback指定言語が利用できない場合の代替言語空白
UserLocale日付・時刻・通貨などの地域設定ja-JP日本語

SetupUILanguage:Windowsセットアッププログラム上の表示言語設定

image.png
image.png
スクロールできます
設定名内容設定値意味
UILanguageWindowsセットアップ画面の表示言語ja-JP日本語
WillShowUI言語パック関連のエラー時にUIを表示するかOnErrorエラー発生時のみ

amd64_Microsoft-Windows-Setup_neutral

image.png

DiskConfiguration:ディスクをどう初期化するか・パーティション作成するかを設定
-> Disk:どのディスクを対象に既存パーティションを削除するかの設定

image.png
スクロールできます
設定名内容設定値備考
DiskID対象となる物理ディスク番号0DiskPartの「list disk」で表示される番号を指定します。ほとんどの場合、0となることが多いです。
WillWipeDisk対象ディスク上の全データを削除するかtrueクリーンインストールする場合は既存のデータをすべて削除しないとインストールできません。

–> CreatePartitions:パーティションを作成
—> CreatePartition:パーティションの詳細

image.png
image.png
スクロールできます
設定名内容設定値備考
Action操作種別AddListItem
Extend残りの領域をすべて使用するか空白 / trueSizeにて容量を指定する場合は空白にします。
Orderパーティションの作成順序1以上の整数
Sizeパーティションのサイズ(MB)1以上の整数 / 空白Extendでtrueを選択した場合は空白にします。
Typeパーティションの種別Primary / EFI / Extended / Logizal / MSR

設定例

XML
<CreatePartitions>
    <!-- EFIシステムパーティションの作成 -->
    <CreatePartition>
        <Order>1</Order>
        <Type>EFI</Type>
        <Size>100</Size>
    </CreatePartition>
    <!-- MSRパーティションの作成 -->
    <CreatePartition>
        <Order>2</Order>
        <Type>MSR</Type>
        <Size>16</Size>
    </CreatePartition>
    <!-- プライマリパーティションの作成 -->
    <CreatePartition>
        <Order>3</Order>
        <Type>Primary</Type>
        <Extend>true</Extend>
    </CreatePartition>
</CreatePartitions>

–> ModifyPartitions:作成したパーティションを設定・フォーマット
—> ModifyPartition:対象のパーティションをどのようにフォーマットするか設定

image.png
image.png
スクロールできます
設定名内容設定値
Action操作種別AddListItem
ActiveパーティションをActiveにするか空白
Extend既存のパーティションを拡張するか空白
FormatファイルシステムNTFS / FAT32 / exFAT
LabelボリュームのラベルSystem / Windows / …
LetterドライブレターC / D / …
Order実行順序1 / 2 / 3 / …
PartitionID対象とするパーティション番号1 / 2 / 3 / …
TypeIDパーティションの種類を識別するIDを設定空白

設定例

XML
<ModifyPartitions>
    <!-- EFIシステムパーティションをフォーマット-->
    <ModifyPartition>
        <Order>1</Order>
        <PartitionID>1</PartitionID>
        <Format>FAT32</Format>
        <Label>System</Label>
    </ModifyPartition>
    <!-- プライマリパーティションをフォーマット-->
    <ModifyPartition>
        <Order>2</Order>
        <PartitionID>3</PartitionID>
        <Format>NTFS</Format>
        <Letter>C</Letter>
        <Label>Windows</Label>
    </ModifyPartition>
</ModifyPartitions>

ImageInstall:どのイメージをどこにインストールするか設定
-> OSImage:どのOSイメージをどこにインストールするか指定
–> InstallTo:OSイメージをどのディスクのどのパーティションに適用するか指定する設定

image.png
image.png
スクロールできます
設定名内容設定値意味
DiskID対象のディスク番号0メインのシステムドライブ
PartitionID対象のパーティション番号(CreatePartitionにて作成した、OSをインストールしたいパーティション番号)3プライマリパーティション

UserData:Windowsセットアップ時にユーザーが入力する情報を自動入力するための設定

image.png
image.png
スクロールできます
設定名内容設定値
AcceptEula使用許諾契約に同意するかtrue
FullNameWindowsの登録所有者を指定空白
Organization組織名を指定空白

specialize設計

image.png
  • amd64_Microsoft-Windows-International-Core_neutral
    ⇒インストール後のWindows本体の言語・地域設定を行う
  • amd64_Microsoft-Windows-Shell-Setup_neutral
    ⇒Windowsシェル(デスクトップ環境や初期設定)関連の設定

amd64_Microsoft-Windows-International-Core_neutral

image.png
スクロールできます
設定名内容設定値意味
InputLocaleキーボードの入力方式0411:00000411日本語キーボード
SystemLocaleUnicode非対応アプリ用の言語設定ja-JP日本語
UILanguageWindowsセットアップ画面の表示言語ja-JP日本語
UILanguageFallback指定言語が利用できない場合の代替言語空白
UserLocale日付・時刻・通貨などの地域設定ja-JP日本語

amd64_Microsoft-Windows-Shell-Setup_neutral

image.png
image.png
スクロールできます
設定名内容設定値意味
AppIconInTouchImprovement2-in-1端末でタスクバーにあるアプリパッチやアイコンを、タッチ操作しやすくするために調整するか空白
BluetoothTaskbarIconEnabledBluetoothアイコンを通知領域へ表示するか空白
Computernameコンピュータ名を設定*自動で名前を生成する(DESKTOP-XXXX)
ConfigureChatAutoInstallTeamsを自動的にインストールするか空白
ConvertibleSlateModePromptPreference2-in-1端末でタブレットモードへ切り替える際の通知設定空白
CopyProfileAdministratorのプロファイルをDefault Userにコピーするかtrue
DisableAutoDaylightTimeSetサマータイムを自動調整するか空白
DoNotCleanTaskBarタスクバーを初期化しないか空白
EnableStartMenuスタートメニューを有効化するか空白
FileExplorerInTouchImprovementエクスプローラのタッチ最適化空白
OEMNameOEM名を設定空白
ProductKeyWindowsのライセンス認証に使用するプロダクトキーを設定空白
RegisteredOrganizationエンドユーザの組織名を設定空白
RegisteredOwneエンドユーザの名前を設定空白
SearchBoxVisibleInTouchImprovementタブレット向け検索ボックスを表示するか空白
ShowPowerButtonOnStartScreen[スタート]画面に[電源オプション]ボタンを表示するか空白
ShowWindowsLiveWindowsLiveサービスを表示するか空白
SignInModeサインイン後に既定でユーザーをタブレットモードに切り替えるか空白
TimeZoneコンピュータのタイムゾーンを指定するTokyo Standard Time日本時間

AutoLogon:コンピューターへの自動ログオンに使用するアカウントを設定する

image.png
image.png
スクロールできます
設定名内容設定値備考
Domainコンピュータのログオンに使用するドメインを設定任意
Enabled自動ログオンを有効にするか任意有効にしたい場合は「true」を設定します。
LogonCount自動ログオンの回数を指定する任意
Username自動ログオン対象のローカルユーザ、ドメインユーザのユーザ名を指定する任意

Password:自動ログオンに使用するアカウントのパスワードを設定する

image.png
image.png
スクロールできます
設定名内容設定値
Value自動ログオンに使用するアカウントのパスワードを設定する任意

oobeSystem設計

image.png
  • amd64_Microsoft-Windows-International-Core_neutral
    ⇒インストール後のWindows本体の言語・地域設定を行う
  • amd64_Microsoft-Windowws-Shell-Setup_neutral
    ⇒Windowsシェル(デスクトップ環境や初期設定)関連の設定

amd64_Microsoft-Windows-International-Core_neutral

image.png
image.png
スクロールできます
設定名内容設定値意味
InputLocaleキーボードの入力方式0411:00000411日本語キーボード
SystemLocaleUnicode非対応アプリ用の言語設定ja-JP日本語
UILanguageWindowsセットアップ画面の表示言語ja-JP日本語
UILanguageFallback指定言語が利用できない場合の代替言語空白
UserLocale日付・時刻・通貨などの地域設定ja-JP日本語

amd64_Microsoft-Windowws-Shell-Setup_neutral

OOBE:OOBE上の設定

image.png
image.png
スクロールできます
設定名内容設定値意味
HideEULAPageライセンス条項画面を非表示にするかtrue
HideLocalAccountScreen管理者パスワード画面を非表示にするか空白
HideOEMRegistrationScreenOEM登録ページを非表示にするか空白
HideOnlineAccountScreensOOBE中にサインインページを非表示にするかtrue
HideWirelessSetupInOOBEWi-Fi設定画面を非表示にするかtrue
NetworkLocationコンピューターがネットワークに接続されている場合、ネットワークの場所を指定する空白
OEMAppIdOEM(PCメーカー)が独自アプリやサービスを識別するためのIDを指定する空白
ProtectYourPC[コンピューターの保護と Windows の機能の向上が自動的に行われるように設定してください] ページを非表示にするか3非表示にする
SkipMachineOOBEライセンス確認や地域設定などのマシンレベルでのOOBEをスキップするか空白
SkipUserOOBEユーザ作成やMicrosoftアカウント設定などのユーザレベルでのOOBEをスキップするか空白
UnattendEnableRetailDemo店頭展示モードを有効にするか空白

UserAccounts:Windowsセットアップ時にユーザーアカウントやパスワードを作成・設定するための項目
-> AdministratorPassword:Administratorユーザのパスワードを設定

image.png
image.png
スクロールできます
設定名内容設定値備考
ValueAdministratorユーザのパスワードを設定任意Administratorを有効にしたい場合に設定します。

-> DomainAccounts:ドメインのグループをローカルグループへ追加するための設定
–> DomainAccountList:ドメインの情報を設定

image.png
image.png
スクロールできます
設定名内容設定値
Domainドメイン名任意

—> DomainAccount:ドメイングループまたはユーザ情報を設定

image.png
スクロールできます
設定名内容設定値備考
Group追加先のローカルグループ任意例えばドメイングループまたはユーザをAdministratorsに追加したい場合は「Administrators」とします。
Name追加するドメイングループまたはユーザ任意

-> LocalAccounts:ローカルユーザの情報を設定
–> LocalAccount:ローカルユーザのユーザ名を設定

image.png
image.png
スクロールできます
設定名内容設定値
Description説明文任意
DisplayName表示名任意
Group所属グループを設定Administrators / Users
Nameユーザ名任意

—> Password:ローカルユーザのパスワードを設定

image.png
image.png
スクロールできます
設定名内容設定値
Valueローカルユーザのパスワード任意

完成版応答ファイル(応答ファイルの全体像)

項目ごとに解説していったので分かりづらかったかと思いますが、最後に完成版の応答ファイルを載せておきます。

そのままコピペでOKです。

XML
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <SetupUILanguage>
                <UILanguage>ja-JP</UILanguage>
            </SetupUILanguage>
            <InputLocale>0411:00000411</InputLocale>
            <SystemLocale>ja-JP</SystemLocale>
            <UILanguage>ja-JP</UILanguage>
            <UserLocale>ja-JP</UserLocale>
        </component>
        <component name="Microsoft-Windows-Setup" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <DiskConfiguration>
                <Disk wcm:action="add">
                    <CreatePartitions>
                        <CreatePartition wcm:action="add">
                            <Order>3</Order>
                            <Extend>true</Extend>
                            <Type>Primary</Type>
                        </CreatePartition>
                        <CreatePartition wcm:action="add">
                            <Order>2</Order>
                            <Size>16</Size>
                            <Type>MSR</Type>
                        </CreatePartition>
                        <CreatePartition wcm:action="add">
                            <Order>1</Order>
                            <Size>100</Size>
                            <Type>EFI</Type>
                        </CreatePartition>
                    </CreatePartitions>
                    <ModifyPartitions>
                        <ModifyPartition wcm:action="add">
                            <Format>NTFS</Format>
                            <Label>Windows</Label>
                            <Order>2</Order>
                            <PartitionID>3</PartitionID>
                            <Letter>C</Letter>
                        </ModifyPartition>
                        <ModifyPartition wcm:action="add">
                            <Order>1</Order>
                            <Label>System</Label>
                            <Format>FAT32</Format>
                            <PartitionID>1</PartitionID>
                        </ModifyPartition>
                    </ModifyPartitions>
                    <DiskID>0</DiskID>
                    <WillWipeDisk>true</WillWipeDisk>
                </Disk>
            </DiskConfiguration>
            <ImageInstall>
                <OSImage>
                    <InstallTo>
                        <DiskID>0</DiskID>
                        <PartitionID>3</PartitionID>
                    </InstallTo>
                </OSImage>
            </ImageInstall>
            <UserData>
                <AcceptEula>true</AcceptEula>
            </UserData>
        </component>
    </settings>
    <settings pass="specialize">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>0411:00000411</InputLocale>
            <UILanguage>ja-JP</UILanguage>
            <UILanguageFallback></UILanguageFallback>
            <SystemLocale>ja-JP</SystemLocale>
            <UserLocale>ja-JP</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Password>
                    <Value>dABlAHMAdABQAGEAcwBzAHcAbwByAGQA</Value>
                    <PlainText>false</PlainText>
                </Password>
                <LogonCount>30</LogonCount>
                <Enabled>true</Enabled>
                <Username>TEST</Username>
            </AutoLogon>
            <ComputerName>*</ComputerName>
            <CopyProfile>true</CopyProfile>
            <TimeZone>Tokyo Standard Time</TimeZone>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>0411:00000411</InputLocale>
            <SystemLocale>ja-JP</SystemLocale>
            <UILanguage>ja-JP</UILanguage>
            <UserLocale>ja-JP</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>3</ProtectYourPC>
            </OOBE>
            <UserAccounts>
                <LocalAccounts>
                    <LocalAccount wcm:action="add">
                        <Password>
                            <Value>dABlAHMAdABQAGEAcwBzAHcAbwByAGQA</Value>
                            <PlainText>false</PlainText>
                        </Password>
                        <DisplayName>TEST</DisplayName>
                        <Group>Administrators</Group>
                        <Name>TEST</Name>
                    </LocalAccount>
                </LocalAccounts>
            </UserAccounts>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="catalog://d:/images/iso/sources/install_windows 11 pro.clg" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

まとめ

今回は、OOBEを完全にスキップするために必要となる、応答ファイル(Unattend.xml)の設計方法について解説しました。

応答ファイルは一見すると複雑なXMLに見えますが、Windows SIMを使用することで、各設定項目をGUIから選択しながら設計できます。

特に重要なのが、以下の3つの構成パスです。

  • windowsPE:Windows PE上で実行される設定
  • specialize:Windows初回起動時に実行される設定
  • oobeSystem:OOBE実行時に適用される設定

今回紹介した設定を組み合わせることで、言語・地域設定やパーティション構成、コンピューター名、ユーザーアカウント、OOBE画面など、Windowsセットアップ時に必要となるさまざまな項目を自動化できます。

また、Unattend.xmlは一度作成して終わりではなく、自分の環境やキッティング方法に合わせて必要な設定だけを組み合わせることが重要です。

例えば、

WinPE
  ↓
windowsPE
  ├─ ディスク初期化
  ├─ パーティション作成
  └─ Windowsイメージ適用
        ↓
specialize
  ├─ コンピューター名
  ├─ タイムゾーン
  └─ 各種Windows設定
        ↓
oobeSystem
  ├─ 地域・言語設定
  ├─ OOBE画面の非表示
  └─ ローカルユーザー作成
        ↓
初回ログオン

というように、「Windowsのどのタイミングで、何を自動化したいのか」を考えながら設計すると、複雑な応答ファイルでも整理しやすくなります。

今回作成した応答ファイルをベースに、さらにWinPE・DISM・BCDBootなどと組み合わせれば、WindowsのクリーンインストールからOOBE、初回ログオンまでを自動化することも可能です。

ぜひ取り入れてみてください。


WinDeployAutoでは、Windowsのセットアップや定型業務の自動化・効率化をテーマに、Bat・PowerShell・Python などを活用した仕組みづくりを行っています。

  • Windows セットアップを自動化したい
  • 繰り返し作業を効率化したい
  • 現場の運用負荷を減らしたい

このようなお悩みがありましたら、ぜひお問い合わせフォームよりお問い合わせください。

今後も、Windowsの展開・運用・自動化に役立つ情報を発信していきます。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

システムエンジニアとしてWindows構築や業務自動化に携わってきました。
PowerShellやPython、AIを活用し、現場の課題を解決することが得意です。
「面倒な作業をなくしたい」「もっと効率化したい」そんな想いを形にします。

コメント

コメント一覧 (1件)

コメントする

目次