TAM サービス Horizon

[TAM Blog] Horizon PowerCLI コマンドレット活用方法 (Part2)

みなさんこんにちは、VMware TAM の安です。

毎年恒例のイベント VMWorld 2021ですが、今年は2021/10/5-10/7での開催が正式にアナウンスされました。
*VMWorld 2021 開催概要はこちら

昨今の COVID-19 情勢を踏まえ、本年も昨年に引き続き、オンラインでの開催となります。
セッション情報等、詳細につきましては今後アップデートされますので、ご期待下さい!

さて、今回の TAM Blog では、運用にお役立て頂ける VMware Horizon PowerCLI 活用シリーズとして、具体的なユースケースを交えたご紹介をしたいと思います。
*VMware Horizon PowerCLI 概要、インストール方法については TAM 山田にて発行したこちらのブログをご参照下さい。

VMware Horizon を運用頂く中で、”接続済みのセッション/ユーザ情報をコマンドから確認したい”、”GUI ではなくコマンドから直接 Pool 操作を行いたい”等、CLI を介した運用方法について、お客様からご意見/ご質問頂くことが多々御座います。
そこで本シリーズでは「確認/参照系」、「操作(CRUD)系」の大きく2パートに分類し、実運用でご活用頂けるコマンドレットをご紹介させて頂きます。今回はその第一弾として「確認/参照系」コマンドを中心にご展開致します。
*Cmdlet Reference > All Cmdlets
https://code.vmware.com/docs/6978/cmdlet-reference/doc/index-all_cmdlets.html

■実行ラボ環境
VMware Horizon 2006(InstantClone 構成)において、1つの Pool に仮想マシンを10台展開
*以下にてご紹介するコマンド群はVMware Horizon 7環境でもご利用頂けます

■事前準備
# 使用する変数をあらかじめ定義しておきます *パラメータはお客様環境で都度ご変更下さい
$cs = 'horizon-01.corp.local' #Horizon Connection Server
$csUser = 'administrator' #User account to connect to Connection Server
$csPassword = 'VMware1!' #Password for user to connect to Connection Server
$csDomain = 'corp.local' #Domain for user to connect to Connection Server
$vc = 'vcsa-01a.corp.local' #vCenter Server
$vcUser = '[email protected]' #User account to connect to vCenter Server
$vcPassword = 'VMware1!' #Password for user to connect to vCenter Server
$AgentStatus = 'AVAILABLE' #Horizon Agent status

# VMware Horizon 操作に必要となるModuleのインポート
Import-Module VMware.VimAutomation.HorizonView
Import-Module VMware.VimAutomation.Core

# VMware Horizon Connection Server API サービスへ接続
$hvServer1 = Connect-HVServer -Server $cs -User $csUser -Password $csPassword -Domain $csDomain

# VMware Horizon View API Service をGet
$Service1 = $hvServer1.ExtensionData

# VMware vCenter Server へ接続
Connect-VIServer -Server $vc -User $vcUser -Password $vcPassword

さて、ここまでで VMware Horizon を CLI で実行操作する準備が整ったので、早速見ていきましょう。

■確認/参照系コマンドに関して
①Pool、VDI の情報を取得する
Get-HVPool –Poolname 'Pool Name'

Get-HVMachineSummary -Poolname 'Pool Name'

"Out-GridView"をパイプすることでテーブル形式でご確認も可能となります

上記”Get-HVMachineSummary”から確認できる各仮想マシン(VDI)上の AgentStatus 定義については、こちらの”BasicStatus”よりご確認頂けます。

$AgentStatus = 'AVAILABLE' 等指定頂くことで、特定の AgentStatus にある VDI のみを抽出し、カウントする、といったことも可能です。
(get-hvmachinesummary –Poolname 'Pool Name'  | where {$_.base.basicstate -eq $AgentStatus }).count
Pool への VDI 展開台数が多い環境でのご利用等、こちらは特にお役立て頂けるケースもあるのではないでしょうか。

②取得した情報を CSV 形式に落とし込む
VMware Horizon 運用を行う中では、ログベースで確認するだけではなく、ファイル形式で落とし込みを行い、展開/管理等を行うケースも多々あるかと思います。
例として今回は、上記①で確認したように、展開した Pool の情報を CSV ファイル形式に落とし込む場合をみていきましょう。

# 特定 Pool に展開された仮想マシン情報を変数に入れる
$AllDesktops = Get-HVMachineSummary –Poolname 'Pool Name' | select -ExpandProperty Base
# AllDesktops を CSV ファイルへ落とし込む(吐き出し先:C:\Reports\Desktops.csv)
$AllDesktops | Export-Csv -path 'C:\Reports\Desktops.csv' –NoTypeInformation

落とし込みできていることが確認できます。

仮想マシン名、AgentStatus のみに絞って抽出したい場合には “Name”,”BasicState” でパイプしましょう。

# 特定 Pool に展開された仮想マシン情報(仮想マシン名、AgentStatus)を変数に入れる
$AllDesktops = Get-HVMachineSummary –Poolname 'Pool Name' | select -ExpandProperty Base | select Name, BasicState

# AllDesktops を CSV ファイルへ落とし込む(吐き出し先:C:\Reports\Desktops.csv)
$AllDesktops | Export-Csv -path 'C:\Reports\Desktops.csv' –NoTypeInformation

仮想マシン名、AgentStatusに絞ったかたちで落とし込みできていることが確認できます。

 

いかがでしたでしょうか。普段 GUI で1つずつ確認/操作頂いているものもコマンドベースで実行することで、より簡素かつ効率的な運用へつながるのではないでしょうか。

次回は「操作(CRUD)系」コマンドを中心に、ユースケースと交えてのご紹介を予定しております。お楽しみに!