vm.gowatana.jp

NEOにほんごVMware(仮)

Horizon を PowerCLI で操作してみる。(JSON でのデスクトップ プール作成編)

引き続き、PowerCLI と VMware.Hv.Helper モジュールを利用して、コマンド ラインからデスクトップ プールを作成してみます。今回は、前回(下記)で作成したものと同様のデスクトップ プールを、JSON ファイルから作成してみます。

前回はこちら。

Horizon と PowerCLI の環境は、これまでと同様です。

 

今回の内容です。

 

デスクトップ プールを定義した JSON ファイルの用意

今回は、下記のような JSON ファイルを用意しています。このファイルは、既存プールの情報や View API のリファレンス などを参考にして(詳しくは後述)、テキスト エディタなどで作成します。

test-win2019-pool-03.json

gist.github.com

 

デスクトップ プールの作成

PowerShell のコンソールを起動して、vCenter と Horizon Connection Server に接続してから、New-HvPool で「-Spec」オプションを指定してプールを作成します。このとき、パラメータ指定によってはエラーが発生したりします。

New-HVPool -Spec .\test-win2019-pool-03.json

 

そして、実行時にエラーが発生してもプールが作成できるケースもあるので、プールが作成できたか、あらためて確認します。

Get-HVPoolSummary -PoolName "test-win2019-pool-03" | ft -AutoSize

 

実際には、下記のようにエラーが発生したりします。今回の例でも、RefreshOsDiskAfterLogoff は指定していないのにエラーになっています。

デスクトップ プールの作成自体が成功していれば、Get-HVPoolSummary などで表示されるはずです。

 

あとは資格を割り当てれば、Horizon Client などから展開されたデスクトップにログオンできるようになるはずです。

 

おまけ

ちなみに JSON ファイルの作成については、Horizon Console などで作成した既存のデスクトップ プールから取得したものを編集するとよさそうかなと思います。

たとえば Get-HVPoolSpec でデスクトップ プール「test-win2019-pool-02」の情報を JSON 形式で取得して、そのままファイルに保存してみます。このコマンドでも、エラーが発生してもファイルの内容を確認すると保存できていることがあります。

Get-HVPool -PoolName "test-win2019-pool-02" | Get-HVPoolSpec -FilePath .\test-win2019-pool-02.json

 

「test-win2019-pool-02.json」ファイルを開くと、下記のように JSON ファイルとして保存されているはずです。ただし、インデントがけっこう深めです。

gist.github.com

 

もうすこしインデントを浅くしたいので、私は VS Code で開いて、コード中での右クリック メニューにある「ドキュメントのフォーマット」、もしくは Shfit + Alt + F キーで再整形しています。

 

そして編集した JSON ファイルは、ひたすら実際に New-HVPool を「-Spec」オプションで実行して、エラー メッセージから問題箇所を修正していきます。

実際に New-HVPool で JSON ファイルを指定してみると、指定不可能そうなパラメータの組み合わせによってエラーになってしまうこともあります。New-HVPool では、JSON ファイルを使用するより、普通にコマンドラインでのオプション指定でプールを作成したほうが簡単かもしれません。

以上、JSON ファイルからデスクトップ プールを作成してみる話でした。