ターゲットデバイスのパーソナリティの管理
通常、同じ仮想ディスクを共有するすべてのターゲットデバイスを同じ構成にする必要があります。ターゲットデバイスのパーソナリティ機能を使用すると、特定のターゲットデバイスのデータを定義し、起動時にターゲットデバイスでそのデータを利用することができます。このデータは、さまざまな目的でカスタムアプリケーションやスクリプトで使用できます。
たとえば、Provisioningサーバーを使用して3つの教室のコンピューターをサポートするとします。そして、コンピューターのデフォルトプリンターを、同じ教室に設置されているプリンターにしたいとします。ターゲットデバイスのパーソナリティ機能を使用してデフォルトプリンターのフィールドを定義し、各ターゲットデバイスのプリンター名の値を入力することができます。フィールドと値は [ターゲットデバイスプロパティ] ダイアログボックスで定義します。この情報はデータベースに格納されます。ターゲットデバイスが起動するとき、デバイス特有のプリンター情報がデータベースから取得され、仮想ディスク上の.INIファイルに書き込まれます。カスタムスクリプトやアプリケーションを内部で開発して、プリンター値を取得しレジストリに書き込むことができます。この方法では、ターゲットデバイスが起動するたびに、教室で通常使うプリンターを正しく使用するように設定されます。
各ターゲットデバイスに定義できるフィールドの数とデータ量は、ターゲットデバイスあたり64KBまたは65536バイトまでです。各フィールドの長さは最大2047バイトです。
ターゲットデバイスのパーソナリティタスク
- コンソールを使用した単一のターゲットデバイスのパーソナリティデータの定義
- コンソールを使用した複数のターゲットデバイスのパーソナリティデータの定義
- ターゲットデバイスのパーソナリティデータの使用
コンソールを使用した単一のターゲットデバイスのパーソナリティデータの定義
単一のターゲットデバイスのパーソナリティを定義するには
- コンソールでパーソナリティデータを定義するターゲットデバイスを右クリックし、[プロパティ] を選択します。
- [パーソナリティ] タブを選択します。
- [追加] をクリックします。[パーソナリティ文字列の追加/編集] ダイアログボックスが開きます。 注:追加できるフィールド名とその文字列値の数に、定まった制限はありません。ただし、単一文字列(名前とデータの組み合わせ)に割り当てられるパーソナリティデータの合計は、最大で約2047バイトです。また、名前、文字列、および区切り文字の合計は、おおよそターゲットデバイスあたり64KBまたは65536バイトまでです。この制限は文字列を追加するときにチェックされます。上限を超えると警告メッセージが表示され、無効な構成の作成を防ぎます。 ターゲットデバイスのパーソナリティデータは、ほかのすべてのプロパティと同様に扱われます。新しいターゲットデバイスがサイレントに、またはBIOSのプロンプト付きで自動的にデータベースに追加されるとき、このデータが継承されます。
- 名前と文字列値を入力します。 注: [名前]ボックスには任意の名前を入力できますが、同じターゲットデバイスに重複するフィールド名を定義することはできません。フィールド名は大文字と小文字が区別されません。つまり、「FIELDNAME」と「fieldname」は同じ名前として扱われます。フィールド名の前後に入力された空白文字は自動的に削除されます。パーソナリティ名の冒頭に$を使用することはできません。この記号は $DiskNameや $WriteCacheTypeなどの予約された値に使用されます。
- [OK]をクリックします。
さらにフィールドと値を追加するには、手順5.と6.を必要なだけ繰り返します。データの追加が完了したら[OK]をクリックして、[ターゲットデバイスプロパティ] ダイアログボックスを閉じます。
コンソールを使用した複数のターゲットデバイスのパーソナリティデータの定義
複数のターゲットデバイスのパーソナリティの定義
- コンソールで、ほかのデバイスと共有したいパーソナリティ設定を持つターゲットデバイスを右クリックし、[コピー]を選択します。[デバイスプロパティのコピー]ダイアログボックスが開きます。
- 詳細ペインでパーソナリティ設定を貼り付けるターゲットデバイスを右クリックし、[貼り付け]を選択します。
- パーソナリティ文字列のオプションをクリックして(このときほかのプロパティの貼り付けを選択することもできます)、[貼り付け]をクリックします。
ターゲットデバイスのパーソナリティデータの使用
ターゲットデバイスでファイルシステムを使用できるようになると、パーソナリティデータがWindows標準の.INIテキストファイルに書き込まれます。このファイルの名前はPersonality.iniです。カスタムスクリプトやアプリケーションから簡単にアクセスできるように、このファイルは仮想ディスクファイルシステムのルートディレクトリに格納されます。
ファイルの書式は次のとおりです。
[StringData]
FieldName1=Field data for first field
FieldName2=Field data for second field
<!--NeedCopy-->
このファイルにはカスタムスクリプトやアプリケーションからアクセスできます。Windowsの標準的な.INI APIによってクエリできます。さらに、バッチファイルからパーソナリティ設定に簡単にアクセスするために、コマンドラインアプリケーションのGetPersonality.exeが用意されています。
ターゲットデバイスの仮想ディスク名とモードは、GetPersonality.exeを使用して取得できます。Personality.iniファイルの[StringData]セクションには、次の予約値が含まれています。
$DiskName=<xx>
$WriteCacheType=<0 (Private image)
All other values are standard image; 1 (Server Disk), 2 (Server Disk Encrypted), 3 (RAM), 4 (Hard Disk), 5 (Hard Disk Encrypted), 6 (RAM Disk), or 7 (Difference Disk). Min=0, Max=7, Default=0>
<!--NeedCopy-->
xxはディスク名です。仮想ディスク名は、$で始めることはできません。この記号は$DiskNameや$WriteCacheTypeなどの予約された値に使用されます。$で始まる名前を入力すると、次のメッセージが表示されます。
A name cannot start with a $. This is used for reserve values like $DiskName and $WriteCacheType. The $DiskName and $WriteCacheType values can be retrieved on the target device using GetPersonality.exe.
<!--NeedCopy-->
$WriteCacheType
パラメータには、[ハードディスクのオーバーフローありデバイスRAMにキャッシュ] モードの次のオプションが含まれます:
- private = 0
- serverCache = 1
- deviceRamCache = 3
- deviceDiskCache = 4
- deviceRamDisk = 6
- serverPersistent = 7
- deviceRamCacheWithDiskOverflow = 9 *
GetPersonality.exe
コマンドラインユーティリティのGetPersonality.exeを使用すると、Windowsのバッチファイルからターゲットデバイスのパーソナリティ設定にアクセスできます。このプログラムはユーザーの代わりに.INIファイルをクエリし、ユーザーが指定する場所にパーソナリティ文字列を書きだします。GetPersonality.exeでは次のコマンドラインオプションがサポートされます。
``` pre codeblock GetPersonality FieldName /r=RegistryKeyPath <- Place field in registry GetPersonality FieldName /f=FileName <- Place field in file GetPersonality FieldName /o <- Output field to STDOUT GetPersonality /? or /help <- Display help
## 例
レジストリキー値の設定
次の例では、DefaultPrinterフィールドからターゲットデバイスのパーソナリティデータ値を取得しターゲットデバイスのレジストリに書き込んで、デバイスのデフォルトプリンターを設定します。
[ターゲットデバイス] に設定されているパーソナリティ文字列は次のとおりです:
DefaultPrinter= \CHESBAY01\SAVIN 9935DPE/2035DPE PCL 5e,winspool,Ne03:
ターゲットデバイスで実行するバッチファイルに次の行を含めます。
GetPersonality DefaultPrinter /r=HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Device
注:実際のキー名はネットワークプリンターのUNC名(\\\dc1\Mainなど)である必要があります。そして、キーの値はwinspool,Ne01:のようになります。ここで、Ne01はインストールされている各プリンターの固有の番号です。
## 環境変数の設定
パーソナリティデータで環境変数を設定するには、2段階で処理を行います。
1. GetPersonality /f コマンドを使用して変数を一時ファイルに挿入します。
1. setコマンドを使用して変数を設定します。たとえば、ターゲットデバイスにパーソナリティ名として環境変数Pathを設定するため、Pathnameを次の文字列値で定義できます:
```
%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Microsoft Office\OFFICE11;C:\Program Files\Microsoft SQL Server\80\Tolls\Binn
<!--NeedCopy-->
/fオプションを使用して、任意の名前の、ここではtemp.txtという一時ファイルを作成します。バッチファイルには次の行を含める必要があります。
```
GetPersonality Pathname /f=temp.txt
set /p Path= <temp.txt
<!--NeedCopy--> ```
注:/fオプションを使用して指定したファイル名が既に存在する場合は、
GetPersonalityでファイルに行が付加されることはありません。その代わりに、ファイル内の既存の行が上書きされます。