応答ファイルの作成
前回は参照コンピューターに対してカスタマイズしたイメージをアップロードしたので、実際にカスタムイメージを展開する作業になります。この際の注意点として、最低1アクションは残して展開することです。この理由としては、PXEブートを間違って行ってしまったとしても自動的にインストールが開始しないことを目的としています。そして、どこまでをゴールとするのかを決めます。例えば、特定のアプリケーションなどでは自分のプロファイルがないとインストールがうまくいかないなどが考えられます。ということは、カスタムイメージにアプリケーションは入っていたとしても起動はしてはいけないなどがあるでしょう(Office 2016などはそれに該当)。
前回、実際にWDSからカスタムイメージを応答ファイルなしでインストールした場合の、対話画面を確認しました。とりあえず今回目標とするゴールは、カスタムイメージを選択する画面以外はすべてバイパスすることになります。
応答ファイルを作成するには、Windows ADKに含まれているシステムイメージマネージャーを使用します。このシステムイメージマネージャーを使用するためには、最初にWindowsイメージ画面でカタログファイルを作成する必要があります。ポイントとしては、ISOファイルをマウントして、ディスクにフォルダを作成し、コピーしておきます。その中にあるwimファイルよりカタログファイルを作成することになります。
カタログファイルが作成されると、コンポーネントが表示されるので、適切なコンポーネントを選択して応答ファイルを作成していきます。
大まかな流れとしては、次の通り
WDS部分の自動化(WindowsPE部分)
- ロケール設定
- インストールディスク設定
- WDSサーバーログオン設定
- インストールディスク指定
OOBE部分の自動化
- ロケール設定
- 自動ログオン設定(administratorでのログオン)
- ドメイン参加(powershellスクリプトを使用)
簡単な解説
今回は、BIOSベースのコンピューターにインストールしました。UEFIの場合はインストールディスク設定が変わってきます。また、新規にローカルユーザーは作成せず、administratorでのログオンを行ってドメインに参加させています。その際、スクリプトを使用してドメイン参加しています。powershellでのドメイン参加になりますが、スクリプトの実行方法を工夫しています。
powershell -ExecutionPolicy Unrestricted -File \\dc1\script\domainjoin.ps1
ここで使用しているスクリプト「domainjoin.ps1」は下記のとおり
$domain = "contoso.com" $password = 'Pa$$w0rd' | ConvertTo-SecureString -asPlainText -Force $username = "$domain\administrator" $credential = New-Object System.Management.Automation.PSCredential($username,$password) Add-Computer -DomainName $domain -Credential $credential Restart-Computer
今回はスクリプトを使用してドメイン参加しましたが、これをプロビジョニングパッケージで行うこともできそうですね。次回はこれで検証してみます。
今回作成した応答ファイルは以下になります。
<?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:00000411</InputLocale> <SystemLocale>ja-JP</SystemLocale> <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"> <DiskID>0</DiskID> <WillWipeDisk>true</WillWipeDisk> <CreatePartitions> <CreatePartition wcm:action="add"> <Extend>true</Extend> <Order>2</Order> <Type>Primary</Type> </CreatePartition> <CreatePartition wcm:action="add"> <Order>1</Order> <Type>Primary</Type> <Size>350</Size> </CreatePartition> </CreatePartitions> <ModifyPartitions> <ModifyPartition wcm:action="add"> <Active>true</Active> <Format>NTFS</Format> <Label>System Reserved</Label> <Order>1</Order> <PartitionID>1</PartitionID> <TypeID>0x07</TypeID> </ModifyPartition> <ModifyPartition wcm:action="add"> <Format>NTFS</Format> <Order>2</Order> <PartitionID>2</PartitionID> <Label>Windows</Label> <Letter>C</Letter> </ModifyPartition> </ModifyPartitions> </Disk> </DiskConfiguration> <WindowsDeploymentServices> <Login> <Credentials> <Username>redbull\administrator</Username> <Password>Pa$$w0rd</Password> </Credentials> </Login> <ImageSelection> <InstallTo> <DiskID>0</DiskID> <PartitionID>2</PartitionID> </InstallTo> </ImageSelection> </WindowsDeploymentServices> <UserData> <ProductKey> <Key>NPPR9-FWDCX-D2C8J-H872K-2YT43</Key> </ProductKey> </UserData> </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"> <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> </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> <HideLocalAccountScreen>true</HideLocalAccountScreen> <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> <HideOnlineAccountScreens>true</HideOnlineAccountScreens> <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> <ProtectYourPC>1</ProtectYourPC> <SkipMachineOOBE>true</SkipMachineOOBE> <SkipUserOOBE>true</SkipUserOOBE> </OOBE> <TimeZone>Tokyo Standard Time</TimeZone> <AutoLogon> <Password> <Value>Pa$$w0rd</Value> <PlainText>Ture</PlainText> </Password> <Username>administrator</Username> <LogonCount>1</LogonCount> <Enabled>true</Enabled> </AutoLogon> <UserAccounts> <AdministratorPassword> <Value>Pa$$w0rd</Value> <PlainText>Ture</PlainText> </AdministratorPassword> </UserAccounts> <FirstLogonCommands> <SynchronousCommand wcm:action="add"> <CommandLine>powershell -ExecutionPolicy Unrestricted -File \\dc1\script\domainjoin.ps1</CommandLine> <Order>1</Order> </SynchronousCommand> </FirstLogonCommands> </component> </settings> <cpi:offlineImage cpi:source="wim:c:/temp/wtp/esd/sources/install.wim#Windows 10 Enterprise Technical Preview" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend>
このファイルの作成方法としてはシステムイメージマネージャーを使用します。
WDSを使用したWindows8.1のライトタッチインストール
の記事でシステムイメージマネージャーでの作成方法を書きましたので参考になると思います。
参考情報
BIOS ベースの推奨ディスク パーティション構成
https://technet.microsoft.com/ja-jp/library/dd744364(v=ws.10).aspx
TypeID
https://msdn.microsoft.com/ja-jp/library/ff715563.aspx
Windows10 の展開時においての10の考慮点
1.最新イメージを作成
- 最新のISOが提供されていない場合は、install.esd ファイルより作成する
2.参照コンピューターのインストールは最初が肝心
- 通常のインストールでは、ローカルユーザーを作成し、administrator アカウントは無効化される。
- ローカルユーザーが存在すると、ストアアプリの関係で Sysprep に失敗する可能性が高い
- Administrator アカウントでログオンする(ローカルユーザーは存在しない)
- 応答ファイルで対応可能
3.参照コンピューターは物理コンピューターで作成
- 仮想マシンで参照コンピューターを作成しても、なぜかキャプチャ9%以降進まない現象が発生(メモリの問題かも)
4.System Reserve領域の作成
- Technet に書いてある通りにやっても、応答ファイル読み込み時にエラーとなる
- TypeID (0x07)を入力しないとダメ(TechnetではTypeIDなし)
- 07=NTFS
- 17=hidden NTFS
- 27=WindowsRE
5.Microsoft-Windows-UnattendJoin は使わない
- ドメインに参加する場合、スクリプトで対応する。
- Specialize で動作するので、コンピューター名は自動で作成されたもの
- ドメインのコンピューターアカウントが作成されない
6.CopyProfileは使わない
- 展開は可能だが、スタート画面が表示されない現象が多発
7.応答ファイルでPowerShell を使うには
- ポリシーがRemoteSignedになっているので、ローカルのスクリプトしか動かない
- PowerShell –ExecutionPolicy Unrestricted –File \\<サーバー名>\\<共有名>\\スクリプト名
8.AutoLogon のログオンカウントを使いこなす
- ログオンカウントで指定された回数、そのアカウントで自動ログオンされる
9.OOBEの新しい項目のUnattendEnableRetailDemoは使わない
- 謎の2アカウントが作成される
10.初回起動時はスタート画面が表示されない時がある
- 再起動して、ログオンすることで解決