VMWare WorkstationでWindows10のクローンを展開するときにいちいちコルタナさんの声を聴きたくない

はじめに

こんにちは!コルタナと申します。

特に需要は無かったのですが、Sysprepとか応答ファイルについて軽く触れてみたかったのでVMWare上でクローンを展開するときに自動でOOBEをスキップ出来るように設定する方法を確認してみました。

まぁ、よくあるSysprep芸なので社内インフラ担当者からしたら当たり前な内容です。

ゴール

最終的には以下の要件を満たせるようにしたいと思います。

  • クローンして起動した時点でVMWare Toolsとベースイメージ作成時の最新パッチがインストール済み
  • VMWare上でクローン操作したらあとは放置するだけでAdministratorでデスクトップ画面まで出す

手順

以下の手順で操作していきます。

  1. Windows ADK用のインスタンスのインストール・セットアップ
  2. 応答ファイルの作成
  3. クローン用ベースイメージのセットアップ
  4. Sysprep

ここではWindows10 Enterprise Evalutionを使用します。

Windows ADK用のインスタンスのインストール・セットアップ

とりあえず、VMWare上に一つ仮想マシンを立ててそこにWindowsをインストールしADKをインストールします。

f:id:jyuch:20180607215321p:plain

ここで1回目の

こんにちは!コルタナと申します。

を聞くことになります。

普通にWindowsのインストールを完了させ、Windows ADK(Assessment and Deployment Kit)をインストールします。

f:id:jyuch:20180607220350p:plain

ここではDeployment Kit以外は特にいらないのでチェックを外しておきます。

f:id:jyuch:20180607220555p:plain

応答ファイルの作成

ベースイメージをインストールするのに使用するインストールメディアからinstall.winをローカルにコピーします。

f:id:jyuch:20180607221600p:plain

インストールイメージからカタログファイルを作成します。この辺はググれば出てくるのでさっと流します。

応答ファイルをいい感じに作ります。

f:id:jyuch:20180607222402p:plain

f:id:jyuch:20180607222411p:plain

f:id:jyuch:20180607222418p:plain

f:id:jyuch:20180607222434p:plain

f:id:jyuch:20180607222441p:plain

f:id:jyuch:20180607222449p:plain

f:id:jyuch:20180607222512p:plain

f:id:jyuch:20180607223425p:plain

最後に検証して完了です。

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="specialize">
        <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">
            <CopyProfile>true</CopyProfile>
            <TimeZone>Tokyo Standard Time</TimeZone>
            <DoNotCleanTaskBar>true</DoNotCleanTaskBar>
            <OEMInformation>
                <Logo>C:\Windows\System32\oemlogo.bmp</Logo>
                <Manufacturer>jyuch</Manufacturer>
                <SupportURL>http://jyuch.hatenablog.com/</SupportURL>
            </OEMInformation>
        </component>
    </settings>
    <settings pass="generalize">
        <component name="Microsoft-Windows-PnpSysprep" 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">
            <DoNotCleanUpNonPresentDevices>true</DoNotCleanUpNonPresentDevices>
            <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls>
        </component>
        <component name="Microsoft-Windows-Security-SPP" 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">
            <SkipRearm>1</SkipRearm>
        </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">
            <AutoLogon>
                <Username>Administrator</Username>
                <Enabled>true</Enabled>
            </AutoLogon>
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <ProtectYourPC>3</ProtectYourPC>
            </OOBE>
        </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>ja-JP</InputLocale>
            <SystemLocale>ja-JP</SystemLocale>
            <UILanguage>ja-JP</UILanguage>
            <UserLocale>ja-JP</UserLocale>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:c:/sysprep/install.wim#Windows 10 Enterprise Evaluation" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

OEMのロゴを設定とかしていますが、これは別に必要な作業ではありません。

クローン用ベースイメージのセットアップ

ふつうにVMの作成・Windowsをセットアップし、セキュリティパッチとVMWare Toolsをインストールします。

f:id:jyuch:20180607223944p:plain

検証環境作成のためにVMを作りまくっているおかげでVM作成RTAでそこそこの記録を出せる気がします。

ここで2回目の

こんにちは!コルタナと申します。

を聞きますが、最後なので我慢しましょう。

あとは好きなソフトウェアやらドライバをインストールします。

終わりましたら監査モードに入ります。

f:id:jyuch:20180607231028p:plain

監査モードに入ったらVMWare Toolsをインストールするのに使用したアカウントを消し去りつつ、クローン後のデスクトップ設定を作りこみます。 ここでの設定がクローン後に作成されるアカウントのデフォルトのプロファイルになります。

ちなみに、ここでの設定は以下の記事の『3. クローン用パソコンで設定を作り込む』を参考にしました。

harukeee.hatenablog.com

f:id:jyuch:20180607232853p:plain

一通り設定が完了したらSysprepする前にOEMのロゴイメージをしれっと紛れ込ませておきます。

Sysprep

最後に先ほど作った応答ファイルで2回目のSysprepを行います。

確認

Sysprepが完了したらVMWare上でVMのクローンを行い、目的の状態まで自動で設定されるか確認します。

おわりに

やってみて感じたのですが、何かと設定を忘れてSysprep後に思い出して憤りを感じながらプログレスバーが伸びるを眺めることになるので、設定するリストをあらかじめ作成してから作業に挑んだほうがいいと思います。

あと、試行錯誤のために何度*1Windowsをインストールしたので、しばらくはWindowsのインストール画面は見たくないです。

おわり

小ネタ

f:id:jyuch:20180608225254p:plain

メーカはこうやって自社のロゴを挟んでいるんですね。

参考

www.tenforums.com

*1:Windows Serverの検証も行ったので、3週間で合わせて50回ほど