作成プロセス中にインスタント クローンWindows仮想マシン (VM) をカスタマイズするには、VMware ClonePrep と Microsoft Sysprep の 2 つのオプションがあります。
ClonePrep は、インスタント クローンの展開中に実行される VMware のカスタマイズ プロセスで、親イメージから作成された各デスクトップ クローンをパーソナライズします。
Sysprep は、基本イメージから構成されたオペレーティング システムを展開する Microsoft ツールです。これにより、応答スクリプトに基づいてデスクトップをカスタマイズできます。
ゲストのカスタマイズ オプション
ClonePrep と Sysprep では、すべてのインスタント クローンがActive Directory ドメインに参加していることを確認します。ClonePrep を使用する場合、クローンにはゴールド イメージと同じコンピュータ セキュリティ識別子 (SID) があります。インスタント クローンが相互に異なる SID を持ち、ゴールド イメージから異なる SID を持つ必要がある場合は、Sysprep を使用します。ClonePrep ではアプリケーションのグローバル一意識別子 (GUID) も保持されますが、一部のアプリケーションではカスタマイズ中に新しい GUID が生成されます。さまざまなクローン タイプの詳細については、KB2003797 を参照してください。
インスタント クローン デスクトップ プールを追加するときに、ClonePrep または Sysprep のどちらを使用しているかに関係なく、クローンが作成された直後に実行されるようにスクリプトを指定し、クローンをパワーオフする前に実行する別のスクリプトを指定できます。
- スクリプトの実行
ClonePrep および Sysprep は、スクリプトを実行するために Windows CreateProcess API を使用します。スクリプトは、CreateProcess API で作成できる任意のプロセスを呼び出すことができます。たとえば、cmd、vbscript、exe、およびバッチ ファイル プロセスは、この API で動作します。
ClonePrep および Sysprep は、スクリプトのパスを 2 番目のパラメータとして CreateProcess API に渡し、最初のパラメータを
NULL
に設定します。たとえば、スクリプト パスが c:\myscript.cmd の場合、CreateProcess の呼び出しは CreateProcess(NULL,c:\myscript.cmd,...) となります。 - スクリプトへのパスの指定
デスクトップ プールを作成または編集するときに、そのスクリプトを指定できます。スクリプトは、ゴールド イメージに配置する必要があります。ネットワーク共有の UNC パスは使用できません。
スクリプトの実行にインタープリタが必要なスクリプト言語を使用する場合は、スクリプト パスをインタープリタの実行可能形式で始める必要があります。たとえば、C:\script\myvb.vbs ではなく、C:\windows\system32\cscript.exe c:\script\myvb.vbs と指定する必要があります。
重要: カスタマイズ スクリプトを安全なフォルダに配置して、不正アクセスを防止します。 - スクリプトタイムアウト制限
デフォルトでは、ClonePrep と Sysprep は、実行に 20 秒以上かかる場合にスクリプトを終了します。このタイムアウトの上限は引き上げることができます。詳細については、「Windows マシンでの ClonePrep カスタマイズ スクリプトのタイムアウト制限の引き上げ」を参照してください。
あるいは、別のスクリプトを実行するスクリプトまたは実行に長時間かかるプロセスを指定できます。
- スクリプト アカウント
ClonePrep および Sysprep は、VMware Horizon Instant Clone Agent サービスが使用するアカウントと同じアカウントを使用してスクリプトを実行します。デフォルトでは、このアカウントはローカル システムです。このログイン アカウントを変更しないでください。変更すると、クローンは起動に失敗します。
- プロセス権限
セキュリティ上の理由により、Windows オペレーティング システムの一部の権限は、カスタマイズ スクリプトを実行する VMware Horizon Instant Clone Agent プロセスから取り除かれます。そのスクリプトは、これらの権限を必要とするアクションを実行できません。
スクリプトを実行するプロセスには、次の権限がありません。
- SeCreateTokenPrivilege
- SeTakeOwnershipPrivilege
- SeSecurityPrivilege
- SeSystemEnvironmentPrivilege
- SeLoadDriverPrivilege
- SeSystemtimePrivilege
- SeUndockPrivilege
- SeManageVolumePrivilege
- SeLockMemoryPrivilege
- SeIncreaseBasePriorityPrivilege
- SeCreatePermanentPrivilege
- SeDebugPrivilege
- SeAuditPrivilege
- スクリプト ログ
ClonePrep および Sysprep は、C:\ProgramData\VMware\VDM\Logs にあるログ ファイルにメッセージを書き込みます。
Sysprep ゲストのカスタマイズ(事前に作成されたコンピュータ アカウントを使用)
Microsoft Sysprep カスタマイズを使用してインスタント クローン デスクトップ プールをプロビジョニングできます。このワークフローでは、Horizon がコンピュータ アカウントを事前に作成します。Sysprep カスタマイズを使用するときに、シャットダウン前スクリプトと同期後スクリプトを設定することもできます。
- ゴールド イメージ仮想マシンにインストールされている特定の Appx パッケージで、Microsoft Sysprep プロセスが失敗することがあります。クローンのプロビジョニングを完了するには、これらの Appx パッケージをゴールド イメージ仮想マシンから手動で削除する必要があります。「Microsoft のサポート サイト」を参照してください。
- 保留中の Windows 更新があると Sysprep が失敗する可能性があります。この問題を回避するには、ゴールド イメージ仮想マシンで Microsoft Windows の更新を実行し、インスタント クローンの Microsoft Windows 更新サービスを無効にすることを検討してください。また、Windows の更新ページを確認して、保留中の更新またはエラーがないことを確認することもできます。
- デフォルトでは、Sysprep の一般化により、組み込みの管理者アカウントが無効になります。ゴールド イメージ仮想マシンに他のユーザー アカウントがなく、クローンのカスタマイズに失敗した場合、ユーザーはデバッグ情報を収集するためにクローン仮想マシンにログインできません。ローカル管理者としてログインしようとすると、ログイン画面に「アカウントが無効になりました。システム管理者に問い合わせてください。」というメッセージが表示されます。この問題を解決するには、「Microsoft サポート サイト」の手順に従って、ゴールド イメージ仮想マシンに新しいユーザー アカウントを作成します。
- ClonePrep または Microsoft Sysprep によるゲストのカスタマイズを使用して、vTPM デバイスをインスタント クローンに追加できます。インスタント クローンのスマート プロビジョニングでは、デフォルトでモード B(親仮想マシンなしでクローンを作成)が使用されます。ただし、7.0 Update 3f より古いバージョンの ESXi ホストで vTPM デバイスを使用している場合、スマート プロビジョニングはモード A(親仮想マシンでクローンを作成)を選択します。プロビジョニング モードの変更については、KB81026 を参照してください。
Sysprep ゲストのカスタマイズ(事前に作成されたコンピュータ アカウントなし)
このゲストのカスタマイズでは、Microsoft Sysprep は Horizon ではなくコンピュータ アカウントを事前に作成します。Active Directory 環境が複雑で、複数のサイトとデータセンターで構成されている場合は、このナレッジベースの記事 https://kb.vmware.com/s/article/2147129 で説明されているプロビジョニングの問題が発生する可能性があります。この問題に遭遇するのは、複数の Active Directory サイトとデータセンターを持つユーザーのうちのごく一部です。事前に作成されたコンピュータ アカウントを使用せずに Sysprep ゲストのカスタマイズを使用して、インスタント クローン プールの作成のための Active Directory サイトをグローバルに、またはプール レベルで自動的に選択します。プール レベルで機能を有効にすると、このワークフローを使用しているすべてのプールでグローバルに有効にする前に、テスト プールで新しいプロビジョニング ワークフローをテストできます。「Sysprep によるゲストのカスタマイズを有効にする(事前に作成したコンピュータ アカウントを使用しない)」を参照してください。