ターゲットデバイスのパーソナリティの管理

通常、同じ仮想ディスクを共有するすべてのターゲットデバイスを同じ構成にする必要があります。ターゲットデバイスのパーソナリティ機能を使用すると、特定のターゲットデバイスのデータを定義し、起動時にターゲットデバイスでそのデータを利用することができます。このデータは、さまざまな目的でカスタムアプリケーションやスクリプトで使用できます。

たとえば、Provisioningサーバーを使用して3つの教室のコンピューターをサポートするとします。そして、コンピューターのデフォルトプリンターを、同じ教室に設置されているプリンターにしたいとします。ターゲットデバイスのパーソナリティ機能を使用してデフォルトプリンターのフィールドを定義し、各ターゲットデバイスのプリンター名の値を入力することができます。フィールドと値は [ターゲットデバイスプロパティ] ダイアログボックスで定義します。この情報はデータベースに格納されます。ターゲットデバイスが起動するとき、デバイス特有のプリンター情報がデータベースから取得され、仮想ディスク上の.INIファイルに書き込まれます。カスタムスクリプトやアプリケーションを内部で開発して、プリンター値を取得しレジストリに書き込むことができます。この方法では、ターゲットデバイスが起動するたびに、教室で通常使うプリンターを正しく使用するように設定されます。

各ターゲットデバイスに定義できるフィールドの数とデータ量は、ターゲットデバイスあたり64KBまたは65536バイトまでです。各フィールドの長さは最大2047バイトです。

ターゲットデバイスのパーソナリティタスク

  • コンソールを使用した単一のターゲットデバイスのパーソナリティデータの定義
  • コンソールを使用した複数のターゲットデバイスのパーソナリティデータの定義
  • ターゲットデバイスのパーソナリティデータの使用

コンソールを使用した単一のターゲットデバイスのパーソナリティデータの定義

単一のターゲットデバイスのパーソナリティを定義するには

  1. コンソールでパーソナリティデータを定義するターゲットデバイスを右クリックし、[プロパティ] を選択します。
  2. [パーソナリティ] タブを選択します。
  3. [追加] をクリックします。[パーソナリティ文字列の追加/編集] ダイアログボックスが開きます。 注:追加できるフィールド名とその文字列値の数に、定まった制限はありません。ただし、単一文字列(名前とデータの組み合わせ)に割り当てられるパーソナリティデータの合計は、最大で約2047バイトです。また、名前、文字列、および区切り文字の合計は、おおよそターゲットデバイスあたり64KBまたは65536バイトまでです。この制限は文字列を追加するときにチェックされます。上限を超えると警告メッセージが表示され、無効な構成の作成を防ぎます。 ターゲットデバイスのパーソナリティデータは、ほかのすべてのプロパティと同様に扱われます。新しいターゲットデバイスがサイレントに、またはBIOSのプロンプト付きで自動的にデータベースに追加されるとき、このデータが継承されます。
  4. 名前と文字列値を入力します。 注: [名前]ボックスには任意の名前を入力できますが、同じターゲットデバイスに重複するフィールド名を定義することはできません。フィールド名は大文字と小文字が区別されません。つまり、「FIELDNAME」と「fieldname」は同じ名前として扱われます。フィールド名の前後に入力された空白文字は自動的に削除されます。パーソナリティ名の冒頭に$を使用することはできません。この記号は $DiskNameや $WriteCacheTypeなどの予約された値に使用されます。
  5. [OK]をクリックします。

さらにフィールドと値を追加するには、手順5.と6.を必要なだけ繰り返します。データの追加が完了したら[OK]をクリックして、[ターゲットデバイスプロパティ] ダイアログボックスを閉じます。

コンソールを使用した複数のターゲットデバイスのパーソナリティデータの定義

複数のターゲットデバイスのパーソナリティの定義

  1. コンソールで、ほかのデバイスと共有したいパーソナリティ設定を持つターゲットデバイスを右クリックし、[コピー]を選択します。[デバイスプロパティのコピー]ダイアログボックスが開きます。
  2. 詳細ペインでパーソナリティ設定を貼り付けるターゲットデバイスを右クリックし、[貼り付け]を選択します。
  3. パーソナリティ文字列のオプションをクリックして(このときほかのプロパティの貼り付けを選択することもできます)、[貼り付け]をクリックします。

ターゲットデバイスのパーソナリティデータの使用

ターゲットデバイスでファイルシステムを使用できるようになると、パーソナリティデータが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でファイルに行が付加されることはありません。その代わりに、ファイル内の既存の行が上書きされます。
ターゲットデバイスのパーソナリティの管理