EUC めも(仮)

日々の仕事のメモ

PowerCLI による Horizon View 運用管理の実践

※本エントリーは、vExpert Advent Calendar 2016 に参加しています!vExpert の方々がさまざまなネタをブログに寄稿されているので、ぜひお立ち寄りください。12/15 は私が担当します。


PowerCLI 6.5 release 1 から Horizon View の API に直接アクセスできるようになり、大部分の操作をスクリプトによって自動化できるようになったことを、前回のエントリーで紹介しました。

本エントリーでは、具体的な使用方法について紹介したいと思います。

 

①ダウンロード

まず、PowerCLI をこちらのページからダウンロードします。

また、GitHubで公開されている Hv.Helper という名前のモジュールもこちらのページからダウンロードします。

 

②インストール

PowerCLI はインストーラを実行してウィザードに沿って進めていくだけでインストールが可能です。Horizon Viewのモジュールが含まれていることを確認します。f:id:ymita1022:20161214135151p:plain

インストール完了後に PowerShell を管理者として実行し、「Set-ExecutionPolicy RemoteSigned」というコマンドレットを実行します。

GitHub からダウンロードした Hv.Helper の方ですが、こちらは VMware.Hv.Helper フォルダを PowerCLI の Module フォルダにコピーします。

 

③モジュールのインポート
PowerCLI をショートカットから実行すると、必要なモジュールが自動的にインポートされます。手動でインポートする場合は、以下のコマンドレットを実行します。
Import-Module VMware.VimAutomation.HorizonView
Import-Module VMware.VimAutomation.Core

 

④Connection Server への接続
Connection Server へ接続するために、以下のコマンドレットを実行します。実行すると、ユーザのクレデンシャル情報を要求されるので入力します。
Connect-HVServer -Server <Connection Server の IP アドレス>

もしくは、以下のようにユーザのクレデンシャル情報をパススルーで渡すことも可能です。(ユーザについては、View Administrator 上で「直接操作」のロールが付与されている必要があります。)
$hvServer = Connect-HVServer - Server <Connection Server の IP アドレス> -User <ユーザアカウント名> -Password <パスワード> -Domain <ドメイン名>

 

⑤View API との連携で使用可能なメソッドの表示
まずどのようなメソッドが使用可能か見てみます。以下のコマンドレットを実行します。
$Services = $hvServer.ExtensionData
$Services

実行すると、メソッドの一覧が表示されます。

f:id:ymita1022:20161214140341p:plain

 

⑥メソッドを使用したスクリプト
ここまで来れば、あとは View API のドキュメントを参照しながらスクリプトを作成していくことになります。PowerShell ISE を使うと、自動的にメソッド名等の入力を補完してくれるので便利です。

例1:Connection Server のリストを表示するスクリプト
$hvServers1 = $Services1.ConnectionServer.ConnectionServer_List()
$hvServers1.General

f:id:ymita1022:20161214141340p:plain

例2 : Connection Server のヘルスステータスを表示するスクリプト
$hvHealth1 = $Services1.ConnectionServerHealth.ConnectionServerHealth_List()
$hvHealth1 | Select -Property Name, Status, Version, Build, DefaultCertificate | Format-Table

f:id:ymita1022:20161214141753p:plain

 

⑦クエリを使用したスクリプト
Horizon View には多数のオブジェクトがありますが、クエリサービスを使うことで必要なオブジェクトの情報を取得できるようになっています。例えば、AD ユーザやプール、マシン、セッションといったオブジェクトを扱うことが可能です。

例3 : すべてのプールを表示するスクリプト
$queryService = $hvServer.ExtensionData.QueryService
$query = New-Object VMware.Hv.QueryDefinition
$query.QueryEntityType = 'DesktopSummaryView'
$query.SortDescending = $true
$queryResults = $queryService.QueryService_Query($query)
$Pools = $queryResults.Results.DesktopSummaryData
$Pools

f:id:ymita1022:20161214142557p:plain

 

⑧Hv.Helper の活用
GitHub で公開されている Hv.Helper では、便利なコマンドレットが提供されています。GitHub では実体となっているスクリプトを参照することも可能です。
- Start-HVPool : プールのリフレッシュやリコンポーズ等のメンテナンス操作を行うためのコマンドレット
- Set-HVPool : プールのプロパティをセットするためのコマンドレット
- Remove-HVPool : プールを削除するためのコマンドレット
- New-HVPool : プールを新規作成するためのコマンドレット

 

最初から便利なコマンドレットが標準提供されているわけではなく、View API の仕様に慣れる必要はありますが、使いこなせると非常に便利です。Horizon View に関連する大半の操作を PowerCLI のスクリプトによって自動化することができるので、使い方によっては大規模環境の運用管理の負荷を下げられます。提供が開始されたばかりということで、GitHubで公開されているコマンドレットは少ないですが、今後の追加公開に期待したいところです。