わすれなぐさ

自称情報ブログ・備忘録

カテゴリ: PC

前回で、Windows 10インストールの自動化はできました。
最後に、Windows 10のインストール後に自動でアプリケーションをインストールするようにしてみましょう。ただし、あまりスマートなやり方ではないです。方法をざっくり説明すると、応答ファイルにコマンドを記入して、ログオン時にインストーラーを実行するようにして、アプリケーションをインストールします。

7. 最初のログオン時に実行するコマンドを応答ファイルに記入する

① Windows SIMでAutounattend.xmlを開きます。

② コンポーネント「Shell-Setup\FirstLogonCommands」を「パス 7 oobeSystem」に追加します。

② 「FirstLogonCommands」を右クリックして「新しい SynchronousCommand の挿入」を選択します。

③ 追加した「SynchronousCommand」を選択して、設定の「CommandLine」にコマンドを記入することで、最初のログオン時にコマンドを実行することができます。

④ 「Order」には「1」と記入します。

インストールメディアにバッチファイルを置いて応答ファイルで実行する

実行したいコマンドラインがたくさんある場合はバッチファイルにまとめてしまいましょう。

インストールメディア(USBメモリ)内にバッチファイルを置き、「CommandLine」にそのバッチファイルのパスを書いておけば、最初のログオン時にバッチファイルを実行することができます。

もしWindows 10をインストールするPCにCドライブしかないのであれば、USBメモリはDドライブになりますから、「CommandLine」に例えば「D:\Setup.bat」と書いておけばUSBメモリのルートに置いたSetup.batを実行できます。

コンポーネント 設定
Shell-Setup\FirstLogonCommands\SynchronousCommand CommandLine D:\Setup.bat
Order 1

アプリケーションを自動でインストールする

インストールメディア(USBメモリ)内にアプリケーションのインストーラーを置いておき、それをコマンドでCドライブにコピーして、msiexecコマンドなどでインストールを実行すれば、Windows 10のインストール後に自動でアプリケーションをインストールすることができます。

前回の記事では、Windows SIMを使ってWindows 10インストールの前半を自動化する応答ファイルを作成しました。
この記事では、インストールの後半であるOOBE(Out-Of-Box Experience)を自動化する設定を応答ファイルに加えていきます。Windows WIMの使い勝手は前回、画像付きで説明したので、今回の記事は画像を省いています。

6. OOBEの応答ファイルを作成する

① 前回作ったAutounattend.xmlをWindows SIMで開きます。

② 以下のコンポーネントを「パス 7 oobeSystem」に追加します。
  • International-Core (WinPEは付かない)
  • Shell-Setup

③ コンポーネントの設定をします。
コンポーネント 設定
International-Core InputLocale 0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}
SystemLocale ja-JP
UILanguage ja-JP
UILanguageFallback ja-JP
UserLocale ja-JP
Shell-Setup TimeZone Tokyo Standard Time
Shell-Setup\OOBE HideEULAPage true
HideOEMRegistrationScreen true
HideOnlineAccountScreens true
HideWirelessSetupInOOBE true
ProtectYourPC 1
※「TimeZone」は何も書かなくても問題ありませんでした。ただし空白を書き込むと失敗します。
※「NetworkLocation」「SkipMachineOOBE」「SkipUserOOBE」はWindows 10では使わなくなりました。
※「HideLocalAccountScreen」はWindows Server向けの設定です。


④ 「Shell-Setup\UserAccounts\LocalAccounts」を右クリックして「新しい LocalAccount の挿入」を選択します。

⑤ 追加した「LocalAccount」の設定をします。
コンポーネント 設定
Shell-Setup\UserAccounts\LocalAccounts\LocalAccount Description (説明)
DisplayName (表示名)
Group Administrators
Name (ユーザー名)
Shell-Setup\UserAccounts\LocalAccounts\LocalAccount\Password Value (パスワード)
  • 「Description」は書かなくても問題ないと思います。
  • 「Name」はユーザーフォルダの名前になります。
  • パスワードを設定しない場合は、「Value」に空の文字列を書き込んでおきます。

⑥ 応答ファイルをAutounattend.xmlの名前で保存する。

応答ファイルの使い方

作成したAutounattend.xmlをインストールメディア(USBメモリ)のルートに設置します。そのメディアからブートすることで、Windows 10を自動インストールできます。

参考

設定値について詳しくは次のリファレンスをご覧ください。
参考:

次の記事

次は、Windows 10のインストール後に自動でアプリケーションがインストールされるようにしてみましょう。

付録

完成した応答ファイルの内容を載せておきます。
<?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="amd64" 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:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}</InputLocale>
            <SystemLocale>ja-JP</SystemLocale>
            <UILanguage>ja-JP</UILanguage>
            <UILanguageFallback>ja-JP</UILanguageFallback>
            <UserLocale>ja-JP</UserLocale>
        </component>
        <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" 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>1</Order>
                            <Size>499</Size>
                            <Type>Primary</Type>
                        </CreatePartition>
                        <CreatePartition wcm:action="add">
                            <Order>4</Order>
                            <Extend>true</Extend>
                            <Type>Primary</Type>
                        </CreatePartition>
                        <CreatePartition wcm:action="add">
                            <Order>3</Order>
                            <Size>16</Size>
                            <Type>MSR</Type>
                        </CreatePartition>
                        <CreatePartition wcm:action="add">
                            <Order>2</Order>
                            <Size>100</Size>
                            <Type>EFI</Type>
                        </CreatePartition>
                    </CreatePartitions>
                    <ModifyPartitions>
                        <ModifyPartition wcm:action="add">
                            <Format>NTFS</Format>
                            <Label>Windows RE</Label>
                            <Order>1</Order>
                            <PartitionID>1</PartitionID>
                            <TypeID>DE94BBA4-06D1-4D40-A16A-BFD50179D6AC</TypeID>
                        </ModifyPartition>
                        <ModifyPartition wcm:action="add">
                            <Format>NTFS</Format>
                            <Label>Local Disk</Label>
                            <Letter>C</Letter>
                            <Order>4</Order>
                            <PartitionID>4</PartitionID>
                        </ModifyPartition>
                        <ModifyPartition wcm:action="add">
                            <PartitionID>3</PartitionID>
                            <Order>3</Order>
                        </ModifyPartition>
                        <ModifyPartition wcm:action="add">
                            <Format>FAT32</Format>
                            <Label>System</Label>
                            <Order>2</Order>
                            <PartitionID>2</PartitionID>
                        </ModifyPartition>
                    </ModifyPartitions>
                    <DiskID>0</DiskID>
                    <WillWipeDisk>true</WillWipeDisk>
                </Disk>
            </DiskConfiguration>
            <ImageInstall>
                <OSImage>
                    <InstallTo>
                        <DiskID>0</DiskID>
                        <PartitionID>4</PartitionID>
                    </InstallTo>
                </OSImage>
            </ImageInstall>
            <UserData>
                <ProductKey>
                    <Key />
                </ProductKey>
                <AcceptEula>true</AcceptEula>
            </UserData>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" 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>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>1</ProtectYourPC>
            </OOBE>
            <UserAccounts>
                <LocalAccounts>
                    <LocalAccount wcm:action="add">
                        <Password>
                            <Value>UABhAHMAcwB3AG8AcgBkAA==</Value>
                            <PlainText>false</PlainText>
                        </Password>
                        <DisplayName>User</DisplayName>
                        <Name>User</Name>
                        <Group>Administrators</Group>
                    </LocalAccount>
                </LocalAccounts>
            </UserAccounts>
            <TimeZone>Tokyo Standard Time</TimeZone>
        </component>
        <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" 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:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}</InputLocale>
            <SystemLocale>ja-JP</SystemLocale>
            <UILanguage>ja-JP</UILanguage>
            <UILanguageFallback>ja-JP</UILanguageFallback>
            <UserLocale>ja-JP</UserLocale>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:c:/temp/install.wim#Windows 10 Pro" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

前回の記事では、Windows SIMをインストールしてカタログファイルを作成するところまで進みました。
これで応答ファイルを作成する準備が整ったので、ここからはWindows SIMを使って実際に応答ファイルを作成していきます。

5. Windowsセットアップの応答ファイルを作成する

Windowsのインストールには2段階あります。ひとつは「Windowsセットアップ」で、プロダクトキーの入力や、インストール先パーティションの設定などを行います。もうひとつは「OOBE (Out-Of-Box Experience)」で、言語やユーザーアカウントの設定を行います。

OOBEの自動化は次の記事で行うので、まずはWindowsセットアップを自動化する項目から設定していきましょう。

① 新しい応答ファイルを作成します。
SIM 7

② 「Windows イメージ」パネルの「Components」を展開します。
SIM 9

③ インストールするWindows 10が64ビットの場合は「amd64_Microsoft-Windows」で始まる項目を、32ビットの場合は「x86_Microsoft-Windows」で始まる項目を使用します。

まずは「International-Core-WinPE」と書かれた項目を右クリックして「パス 1 windowsPE に設定を追加」を選択します。
※実際は「amd64_Microsoft-Windows-International-Core-WinPE_10.0.16299.15_neutral」のような長い名前ですが、省略して「International-Core-WinPE」と書くことにします。
※追加する項目は「International-Core-WinPE」です。ほとんど同じ名前で「WinPE」が付いていない項目があるので、間違えないように気を付けてください。
SIM 10

④ 同様にして、「Setup」をパス1に追加します。
※こちらも似た名前で「Shell-Setup」がありますが、単に「Setup」のほうを追加してください。
SIM 12

⑤ ウィンドウ中央の「応答ファイル」パネルで「International-Core-WinPE」をクリックすると、右のパネルに設定項目が表示されるので、次のように入力します。
コンポーネント 設定
International-Core-WinPE InputLocale 0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}
SystemLocale ja-JP
UILanguage ja-JP
UILanguageFallback ja-JP
UserLocale ja-JP

SIM 13
※「InputLocale」のやたら長い値はMicrosoft IMEを意味しています。ウェブページによっては「0411:e0010411」と書かれていることもあり、どう違うのか分かりませんでしたが、ここでは次の参考文書に示されている書き方に合わせました。
⑥ 「International-Core-WinPE」のツリーを開くと「SetupUILanguage」があるので、これにも設定を加えます。
コンポーネント 設定
International-Core-WinPE\SetupUILanguage UILanguage ja-JP

SIM 14

⑦ 以下の設定も記入します。
コンポーネント 設定
Setup\UserData AcceptEula true
Setup\UserData\ProductKey Key (プトダクトキー)

プロダクトキーがあれば「Key」の値を入力してください。なければ、エディションごとの共通プロダクトキーを入力することもできます。共通キーが使えるのは、今までに一度でもWindows 10をインストールしたことがあるPCのみです(多分)。

共通キー:
プロダクトキーに空の文字列を書き込んでおくこともできます。空の文字列を書き込むには、「Key」を右クリックして「空の文字列の書き込み」にチェックを付けます。こうすると、Windowsセットアップが「インストールするオペレーティング システムを選んでください」の画面で一度停止してしまうので完全自動インストールではなくなってしまいますが、1つ動作を残すことによって誤ってWindowsをインストールするのを防げる利点があります。また、共通キーを使って再インストールすると上書きされてしまうプロダクトキーを元のまま維持することができます。
※install.esdをinstall.wimに置き換えれば、プロダクトキーが空白でも完全自動でインストールできます。
SIM 15

⑧ 「DiskConfiguration」を右クリックして「新しい Disk の挿入」をクリックします。 SIM 16

⑨ 新しく作られた「Disk」の設定を変更します。
コンポーネント 設定
Setup\DiskConfiguration\Disk DiskID 0
WillWipeDisk true

SIM 17

⑩ 「CreatePartitions」を右クリックして「新しい CreatePartition の挿入」を4回行います。
SIM 18

⑪ 同様に「新しい ModifyPartition の挿入」も4回行います。
SIM 19

⑫ 4つの「CreatePartition」を次のように設定します。
Extend false false false true
Order 1 2 3 4
Size 499 100 16
Type Primary EFI MSR Primary
※空欄の部分には何も書き込みません。

⑬ 4つの「ModifyPartition」を次のように設定します。
Format NTFS FAT32 NTFS
Label Windows RE System Local Disk
Letter C
Order 1 2 3 4
PartitionID 1 2 3 4
TypeID DE94BBA4-06D1-4D40-A16A-BFD50179D6AC

SIM 20

⑭ 次の設定を加えます。
コンポーネント 設定
Setup\ImageInstall\OSImage\InstallTo DiskID 0
PartitionID 4

※以上のパーティション構成はUEFI/GPTの場合の構成です。また、パーティションサイズはWindows 10 Fall Creators Updateを普通にクリーンインストールしたときのデフォルト値にしています。Windows 10のパーティション構成については次のページが参考になります。

⑮ 以上でWindowsセットアップの応答ファイルが完成しました。ここで一度保存してみましょう。ファイル名は「Autounattend.xml」とします。
SIM 21

メッセージパネルに「設定は変更されていません。応答ファイルに保存されません。」という説明がたくさん現れると思いますが無視してください。

⑯ 一度応答ファイルを閉じて開き直すと、未設定の項目が消えてスッキリします。
SIM 22

参考

設定の詳細については次のページをご覧ください。
参考:

次の記事

次はOOBEを自動化する設定を応答ファイルに追加していきます。

「応答ファイル」を作成して、USBメモリからWindows 10を全自動でインストールする方法を紹介します。

内容が長くなったので、記事は4つに分割しています。ここでは概要と、応答ファイルを作るまでの準備について説明します。

個人的な経緯

施設で貸し出しているPCが返却されるたびに、PCの状態を元に戻す必要がありました。返却されたPCをできるだけ少ない手順で最新のWindows 10といくつかの必要なソフトがインストールされた状態にするにはどうすればいいか考えていました。

見つけた方法としては、マスターイメージを作成して展開する方法と、Windows 10をクリーンインストールしてから必要なソフトを入れる方法があるようでしたが、今回は後者の方法を取ることにしました。クリーンインストール後に必要なソフトを自動でインストールするには、応答ファイルで指定できるFirstLogonCommandsを利用します(4つめの記事で紹介)。

概要

  1. Windows ADKのインストール
  2. Windows 10のインストールメディアを作る
  3. インストールメディアのデータからWIMファイルを作る
  4. WIMファイルからカタログファイルを作る
  5. Windowsセットアップの応答ファイルを作る
  6. OOBEの応答ファイルを作る
  7. バッチファイルで最初のログオン時の処理を書く
※応答ファイルはXMLファイルなので、ぶっちゃけテキストエディターさえあれば作れなくもないです。

1. Windows ADKのインストール

応答ファイルを作成するには、Windows SIM(システム イメージ マネージャー)というツールを利用します。Windows SIMはWindows ADK(アセスメント & デプロイメント キット)に含まれているので、次のページからWindows ADKをダウンロード、インストールしてください。
バージョンは、インストールするPCのバージョンに合わせてください。Windows 10のバージョンは「設定/システム/バージョン情報」の「Windows の仕様」で確認できます。

2. Windows 10のインストールメディアを作る

Microsoftが配布しているメディア作成ツール(MediaCreationTool)を使って、USBメモリにWindows 10のインストールメディアを作成します。
※ISOファイルがあればそれを使っていただけます。

メディア作成ツールは、次のページの「ツールを今すぐダウンロード」からダウンロードできます。
ダウンロードしたMediaCreationTool.exeを起動すると、利用規約が表示されるので同意してください。次の選択肢では「別の PC のインストール メディアを作成する」を選びます。言語、アーキテクチャ、エディションは任意に選んでください。使用するメディアは「USB フラッシュ ドライブ」を選びます。PCに接続されているUSBメモリの一覧が表示されるので、選択して「次へ」を押すと、メディアの作成が始まります。

3. WIMファイルを作る

Windows SIMで応答ファイルを作成するために必要な「カタログファイル」を作成するために、WIMファイルが必要になります。WIMファイルはWindowsのイメージファイルであるため、インストールメディアに含まれているのですが、メディア作成ツールで作ったメディアの場合にはWIMファイルではなく、それを複数まとめて圧縮したESDファイルの形式でイメージが保存されています。
※メディア作成ツール以外の方法でインストールメディアを作った人は、USBメモリのsourcesフォルダ内にinstall.wimがすでにあるかもしれません。その場合はこの手順を飛ばしてください。

ESDファイルからWIMファイルを作るには次のようにします。

① コマンドプロンプトを管理者として実行します。

② 次のコマンドを実行します。(UドライブがUSBメモリと仮定)
DISM /Get-WimInfo /WimFile:U:\sources\install.esd

③ 出力結果が次のようになると思うので、自分がインストールしたいWindows 10のエディションのインデックス番号を確認してください。
展開イメージのサービスと管理ツール
バージョン: 10.0.16299.15

イメージの詳細: F:\sources\install.esd

インデックス: 1
名前: Windows 10 S
説明: Windows 10 S
サイズ: 16,088,647,927 バイト

インデックス: 2
名前: Windows 10 Home
説明: Windows 10 Home
サイズ: 15,902,243,813 バイト

インデックス: 3
名前: Windows 10 Education
説明: Windows 10 Education
サイズ: 16,086,095,424 バイト

インデックス: 4
名前: Windows 10 Pro
説明: Windows 10 Pro
サイズ: 16,086,813,205 バイト

④ WIMファイルを取り出すには次のコマンドを実行します。この例では、インデックス4 (Windows 10 Pro)のWIMファイルをC:\tempフォルダ内にinstall.wimの名前で作成します。
DISM /Export-Image /SourceImageFile:U:\sources\install.esd /SourceIndex:4 /DestinationImageFile:C:\temp\install.wim /Compress:max /CheckIntegrity
※/Compress:maxオプションは付けると時間が掛かるうえにWIMファイルの容量が増えてしまうのですが、このオプションがないとこの後のカタログファイルが作れないみたいなので付けてください。

4. Windows SIMでカタログファイルを作成する

Windows SIMを起動して、ウィンドウ左下「Windows イメージ」パネルの「Windows イメージまたはカタログ ファイルを指定してください」を右クリックして「Windows イメージの選択...」を選び、先程作ったWIMファイルを選択してください。
SIM 1

WIMファイルを選択すると「カタログ ファイルを作成しますか?」と問われるので、「はい」を選択します。
SIM 2

しばらくすると、左下のウィンドウにカタログ(?)が出てきます。
SIM 6

このとき、WIMファイルがある場所にカタログファイル(.clg)が生成されます。今後はWindows イメージとしてこのファイルを選択することもできます。

参考


次の記事

次は実際に応答ファイルを作成していきます。

コマンドプロンプトや、バッチファイル、PowerShellでシステムの復元ポイントを作成する方法です。

参考までに、私の環境はWindows 10 Fall Creators Updateです。

コマンドでCドライブのシステムの復元を有効にする方法

デフォルトではシステムの復元が無効になっているので、まずは有効化する必要があります。Cドライブのシステムの保護を有効にするには、PowerShellで
Enable-ComputerRestore -Drive C:
と実行します。

コマンドプロンプトやバッチファイルでは
PowerShell -Command "Enable-ComputerRestore -Drive C:"
とすることで、PowerShellコマンドを実行できます。

コマンドでシステムの復元ポイントを作成する

コマンドでシステムの復元ポイントを作成するには、PowerShellで
Checkpoint-Computer -Description "My Restore Point" -RestorePointType MODIFY_SETTINGS
と実行します。

コマンドプロンプトやバッチファイルでは
PowerShell -Command "Checkpoint-Computer -Description 'My Restore Point' -RestorePointType MODIFY_SETTINGS"
とします。

参考:Create System Restore Point in Windows 10 Performance & Maintenance Tutorials

このページのトップヘ