Home > Windows にまつわる e.t.c. > Windows Server / Windows Client OS の sysprep をカスタマイズする

自動応答


このページはサブコンテンツです。検索等でこのページに直接来られた方は以下のメインページも参照してください。

Windows Server / Windows Client OS の sysprep をカスタマイズする

 

同一構成のサーバーを展開する時には sysprep を使用しますが、sysprep をしただけだと mini setup の対話処理が入ってしまい展開にひと手間かかってしまいます。

オンプレで数台の展開であれば、この mini setup の対話処理はあまり苦にならないのですが、クラウド環境とかでスケールアウトするためのイメージ作りの場合は、このオペレーションが致命的に邪魔です。

クラウドベンダーがスケールアウト用の OS 環境初期化ツールを準備している場合もありますが、パスワードが初期化されてしまったりと要件に合わないこともままあります。

そんな時は、syspre の自動応答ファイルを自作します。

 

install.wim のコピー

自動応答ファイルは、インストールメディアの install.wim から作成するので、ワークディレクトリに編集用 install.wim をコピーします。
(インストールメディアの ISO ファイルをダブルクリックして直接マウントした環境で作業しないと ACL エラーが出る事があります)

PowerShell プロンプトだと変数が簡単に扱えるので、PowerShell プロンプトでのオペレーションを前提に解説します。

以下スクリプトをテキストエディターで必要個所を変更し、PowerShell プロンプトにペーストすると、ワークディレクトリに install.win がコピーされます。

################################################
# 利用環境別の変数セット
################################################
# インストールメディアをセットした先
$InstallMedia = "F:\"

# 作業ディレクトリ
$WorkDirectory = "D:\Work"

######################################
# 必要変数(編集不要)
######################################
# Install.wim 
$InstallWim = Join-Path $InstallMedia "sources\install.wim"

# 自動応答ファイル編集場所
$UntitledFileEdit = Join-Path $WorkDirectory "UntitledFileEdit"

# 編集用 Install.wim
$EditWim = Join-Path $UntitledFileEdit "Install.wim"

# 自動応答ファイル
$Untitled = Join-Path $UntitledFileEdit "Untitled.xml"

######################################
# install.wim を持ってくる
######################################
# ワークディレクトリクリア
if( Test-Path $WorkDirectory ){ rd $WorkDirectory -Recurse -Force }

# install.wim を持ってくる
if( -not (Test-Path $UntitledFileEdit )){ md $UntitledFileEdit }
copy $InstallWim $UntitledFileEdit


echo "編集場所"
echo $UntitledFileEdit
echo ""
echo "編集用 Install.wim"
echo $EditWim
echo ""
echo "自動応答ファイル"
echo $Untitled

 

Windows SIM の起動と install.wim の読み込み、

Windows SIM (Windows システム イメージ マネージャー)は Windows Kits にあるので、Windows SIM を起動し、コピーした Install.wim を開きます。

 

Install.wim を開く際に、PowerShell プロンプトに編集場所のフルパスが表示されているので、これをコピペし、Install.wim を開くのが簡単です。

 

Install.wim を開き、編集対象を選択し、カタログファイルを作成します。

 

自動応答の設定

自動応答ファイルには、対話処理が必要なところを設定すればノンタッチで Mini Setup を完了させることができます。

新しい応答ファイル

 

Compornents を展開し、応答ファイル設定に必要なコンポーネントをセットします

コンポーネントの先頭には以下のプレフィックスがついてます。

amd64 x64 OS 用コンポーネント
x86 x86 OS 用コンポーネント
wow64 Wow 用コンポーネント(使わない)

 

Windows Server であれば amd64 だけ設定すれば OK ですね。

コンポーネントを右クリックし、セット先(構成パス)を選択して以下のコンポーネントをセットします。
(x86 OS の場合は、x86 用コンポーネントプレフィックスの「x86_」に読み替えてください)

amd64_Microsoft-Windows-International-Core_xxxx_neutral 7 oobeSystem
amd64_Microsoft-Windows-PnpSysprep_xxxx_neutral 3 generalize
amd64_Microsoft-Windows-Security-SPP_xxxx_neutral 3 generalize
amd64_Microsoft-Windows-Shell-Setup_xxxx_neutral 4 specialize
amd64_Microsoft-Windows-Shell-Setup_xxxx_neutral 7 oobeSystem

 

amd64_Microsoft-Windows-International-Core_xxxx_neutral を 7 oobeSystem へ

amd64_Microsoft-Windows-PnpSysprep_xxxx_neutral を 3 generalize へ

amd64_Microsoft-Windows-Security-SPP_xxxx_neutral を 3 generalize へ

amd64_Microsoft-Windows-Shell-Setup_xxxx_neutral を 4 specialize へ

amd64_Microsoft-Windows-Shell-Setup_xxxx_neutral を 7 oobeSystem へ

 

システムロケールに関する設定

まずは、システムロケールに関する設定です。

 

構成パス 7 oobeSystem
コンポーネント名 amd64_Microsoft-Windows-International-Core_xxxx_neutral
ツリー \

 

項目 日本語環境 Azure/AWS
InputLocale 0411:E0010411 0409:00000409
SystemLocale ja-JP en-US
UILanguage ja-JP en-US
UserLocale ja-JP en-US

 

システムロケールなので、タイムゾーンも指定します。

構成パス 7 oobeSystem
コンポーネント名 amd64_Microsoft-Windows-Shell-Setup_xxxx_neutral
ツリー \

 

項目 日本語環境 Azure/AWS
TimeZone Tokyo Standard Time UTC

 

プロダクトキー

構成パス 4 specialize
コンポーネント名 amd64_Microsoft-Windows-Shell-Setup_xxxx_neutral
ツリー \

 

項目
ProductKey プロダクトキー

ちなみに、クラウド環境は ボリューム ライセンス認証サービス サーバーが使われているので、プロダクトキーの設定は不要です。(無入力)

あわせてコンピューター名もランダム生成されるように設定します。

項目
ComputerName *

 

ソフトウェアライセンス条項の非表示

構成パス 7 oobeSystem
コンポーネント名 amd64_Microsoft-Windows-Shell-Setup_xxxx_neutral
ツリー \OOBE

 

項目
HideEULAPage true

 

Administrator パスワード

構成パス 7 oobeSystem
コンポーネント名 amd64_Microsoft-Windows-Shell-Setup_xxxx_neutral
ツリー \UserAccounts\AdministratorPassword

 

項目
Value パスワード

 

GUI 設定ではないところ

最後に GUI 設定ではないところを設定します。

■ sysprep実行回数をカウントしない

Windows Server 2012 R2 では sysprep 回数制限が1000回と事実上無制限になりましたが、Windows Server 2008 R2 以前では 3回と回数が少ないので、カウントしない設定を入れます。 

構成パス 3 generalize
コンポーネント名 amd64_Microsoft-Windows-Security-SPP_xxxx_neutral
ツリー \

 

項目
SkipRearm 1

 

■ ドライバー設定を保持する

sysprep時にドライバー構成情報を保持するようにします。

構成パス 3 generalize
コンポーネント名 amd64_Microsoft-Windows-PnpSysprep_xxxx_neutral
ツリー \

 

項目
DoNotCleanUpNonPresentDevices true
PersistAllDeviceInstalls true

 

自動応答ファイルの出力

設定が完了したら、自動応答ファイルを Untitled.xml へ出力します。

 

PowerShell プロンプトに自動応答ファイルのフルパスが表示されているので、これをコピペし Untitled.xml を保存すると簡単です。

 

出力済みの Untitled.xml を読み込めば、再編集できます。

 

 

sysperp

sysprep する際は、Untitled.xml を以下のフォルダーにコピーします。

C:\Windows\System32\sysprep

 

ターゲット PC で、以下スクリプトを PowerShell プロンプトにペーストすると、コビー先がエクスプローラーで開かれるのでコピーします。

######################################
# Untitled.xml をセットする
######################################
# 対象ディレクトリを開く
$WinDir = $env:windir
$TergetDirectory = Join-Path $WinDir \System32\sysprep
ii $TergetDirectory

 

以下コマンドで自動応答が組み込まれた sysprep になります。

sysprep /generalize /oobe /shutdown /unattend:untitled.xml

 

 

Copyright © MURA All rights reserved.