Ask CORE

Microsoft Japan Windows Technology Support

Sysprep 中に任意のコマンドを実行する方法について

こんにちは。Windows テクノロジー サポートの安達です。

Sysprep 実施中に任意のコマンドを実行する方法について
ご紹介したいと思います。

なお、本日ご紹介させていただきますコマンドの実行方法については
Windows Vista 以降の OS に付属の Sysprep を対象とした内容となります。

Sysprep はシステム準備ツールと呼ばれ、主にマスタ用に構築した環境を
複数の端末に展開する場合に SID 等のシステム固有のデータを初期化するために
使用されるツールです。

Sysprep は様々な設定を初期化し、クリーンアップ処理を行います。

それらの設定は Sysprep 実行時に指定可能な応答ファイルを用いる事で
設定可能な項目もありますが、応答ファイルで用意されていない設定や
個別のカスタマイズを行いたい場合は、Sysprep 中に特定のタイミングで
コマンドを実行し、設定する方法があります。

Sysprep 中に任意のコマンドを実行する一般的な方法としては、
以下の 3 つがあります。

  1. SetupComplete.cmd を利用する方法
  2. 応答ファイルの <RunSynchronousCommand> を利用する方法
  3. 応答ファイルの <FirstLogonCommands> を利用する方法

上記 3 つの方法は実行されるタイミングや設定方法がそれぞれ異なりますので、
個別にご紹介していきます。


1. SetupComplete.cmd を利用する方法

SetupComplete.cmd を利用する事で Sysprep 完了後、ログオン直前のタイミングで
任意のコマンドを実行させる事が可能です。
なお、SetupComplete.cmd は SYSTEM 権限で実行されます。
– メリット
  • 応答ファイルを別途用意する必要がなく手軽に利用する事が可能。
  • セットアップが完了しているため、システムが通常の状態にあり、
    ユーザーがログオンする前に処理を行う事ができる。
– デメリット
  • HKCU 配下のレジストリ変更等は行えない。
– 設定手順
  1. メモ帳を開き、任意のコマンド内容を記述します。
  2. SetupComplete.cmd” のファイル名で任意の場所に保存します。
  3. 保存した “SetupComplete.cmd” ファイルを以下のフォルダ内に保存します。
%WinDir%\Setup\Scripts

Scripts フォルダは既定で存在しませんので新規に作成します。
メモ帳から直接保存する事は出来ませんので、
一旦任意の場所に作成してから保存してください。

– 実行タイミング

以下 “Windows のセットアップ” の最終処理中に実行されます。

SetupComplete

2. 応答ファイルの <RunSynchronousCommand> を利用する方法

Sysprep 実行時に指定可能な応答ファイルに <RunSynchronousCommand> を
設定する事により任意のコマンドを実行させる事が可能です。

今回は、Sysprep の Specialize と呼ばれる構成パス中に
コマンドを実行する方法について紹介します。

– メリット
  • SYSTEM 権限で実行される (Credentials 未構成の場合) ため、様々な設定変更が可能。
– デメリット
  • 応答ファイルに設定を記載する必要がある。
  • 設定内容によっては oobeSystem 構成パスで再度初期化される。
– 設定手順
  1. Windows AIK がインストールされている端末で
    Windows システム イメージ マネージャ” を起動します。
    Windows AIK のインストール方法については以下のサイトをご参照ください。
    1.1. Windows 自動インストール キット (Windows AIK) のインストール
    http://technet.microsoft.com/ja-jp/windows/ee676464.aspx#01
  2. 挿入” メニューから “同期コマンド” を選択し、
    パス 4 specialize(4)…” を選択します。
    “Windows イメージ” および “応答ファイル” は既に登録されていると仮定します。
    それぞれの登録方法については以下のサイトをご参照ください。
    1.3. プロファイル コピー用応答ファイルの作成
    http://technet.microsoft.com/ja-jp/windows/ee676464.aspx#03
    sim specialize command
  3. 任意のコマンドまたは bat ファイル等をフルパスで記載します。
    sim add command
  4. 以下のように設定されます。
    sim specialize config
  5. 必要に応じて “Credentials” 内にコマンドの実行アカウントを指定します。
    “Credentials” 項目を設定しない場合には SYSTEM 権限で実行されます。
    複数のコマンドを指定する事も可能です。
    その場合は、上記 2 – 5 の手順を繰り返し行います。
    sim specialize credentials
  6. 応答ファイルを保存し、作成した応答ファイルを使用して Sysprep を実行します。
    応答ファイルを使用した Sysprep の実行方法については
    以下のサイトをご参照ください。
– 実行タイミング

以下 Sysprep の Specialize 構成パスにおける “システム設定の適用中” に実行されます。

RunSynchronousCommand

3. 応答ファイルの <FirstLogonCommands> を利用する方法

Sysprep 実行時に指定可能な応答ファイルに <FirstLogonCommands> を設定する事により
任意のコマンドを実行させる事が可能です。

<FirstLogonCommands> を利用する事により、Sysprep 完了後の初回ログオン時に
1 度だけ任意のコマンドを実行させる事が可能です。

なお、ここでご紹介させていただく方法でのコマンド実行は
ログオンしたアカウントの権限で実行されます。
管理者権限を持つアカウントでログオンした場合は、昇格された権限にて実行されます。

– メリット
  • HKCU 配下のレジストリの設定変更等が可能。
– デメリット
  • 応答ファイルに設定を記載する必要がある。
  • SYSTEM 権限が必要な設定変更等は行えない。
– 設定手順
  1. Windows AIK がインストールされている端末で
    Windows システム イメージ マネージャ” を起動します。
  2. 挿入” メニューから “同期コマンド” を選択し、
    パス 7 oobeSystem(7)…” を選択します。
    “Windows イメージ” および “応答ファイル” は既に登録されていると仮定します。
    sim oobe command
  3. 任意のコマンドまたは bat ファイル等をフルパスで記載します。
    sim add command
  4. 以下のように設定されます。
    複数のコマンドを指定する事も可能です。
    その場合は、上記 2 – 4 の手順を繰り返し行います。
    sim oobe config
  5. 応答ファイルを保存し、作成した応答ファイルを使用して Sysprep を実行します。
– 実行タイミング

以下 Sysprep 後の初回ログオン時に実行されます。

FirstLogonCommands

参考情報