はじめに
VMware PowerCLI を使って VMware Horizon View 7 環境を制御する手順を紹介します。
VMware PowerCLI 6.5.2 以降では、MSI 形式の提供は廃止され、PowerShell Garallry[1]PowerShell コンテンツのリポジトリ 経由によるインストールとなりました。
MSI 形式の提供を廃止した理由は、リリース期間の短縮や、より新機能をタイムリーに提供するためのようです。
This Windows PowerShell module contains VMware.PowerCLI…
VMware PowerCLI インストール
Windows PowerShell を管理者権限で起動し、以下の手順でインストールします。
利用可能な VMware PowerCLI を確認
Find-Module -Name VMware.PowerCLI
VMware.PowerCLI モジュールをインストール
Install-Module -Name VMware.PowerCLI
VMware.PowerCLI の各モジュールをインストール
Get-Module -Name VMware.*View -ListAvailable | Import-Module
拡張機能のインストール
一部のコマンドは、VMware 社が提供する拡張機能をインストールする必要があります。手順は以下のとおりです。
- GitHub リポジトリページへアクセス
- 緑色の「Code」からプルダウンで、「Download ZIP」をクリック
- zip ファイルを解凍し、
Modules\VMware.Hv.Helper
フォルダを以下のディレクトリにコピー- ユーザ固有 :
%UserProfile%\Documents\WindowsPowerShell\Modules
- システム全体:
C:\Program Files\WindowsPowerShell\Modules
- ユーザ固有 :
- 拡張機能を解除
dir 'C:\Program Files\WindowsPowerShell\Modules\VMware.Hv.Helper\' | Unblock-File
Horizon Connection Server 接続
VMware PowerCLI を使って、Horizon Connection Server に接続・切断するには、以下のコマンドを使います。
Horizon Connection Server 接続
Connect-HVServer -Server cs01.example.com -User Administrator@example.com -Password Password
Horizon Connection Server 切断
Disconnect-HVServer -Server cs01.example.com
コマンド実行時、以下のエラーが出力される場合があります。
Connect-HVServer : 機関 ‘192.168.1.151’ との SSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立できませんでした。
以下のコマンドを実行し、IP ではなくホスト名を使用することで解決します。
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
コマンド実行例
仮想デスクトップの状態を確認
> Get-HVMachineSummary
Machine DesktopPool DNS Name User Host Agent Datastore Status
------- ----------- -------- ---- ---- ----- --------- ------
win10-1 testpool win10-1.e... 192.168.1.11 7.6.0 ds01 AVAILABLE
「使用可能」となっている仮想デスクトップの台数を抽出
> (get-hvmachinesummary | where {$_.base.basicstate -eq "AVAILABLE"}).count
1129
スクリプト例
仮想デスクトップの状態を表示するスクリプト例
#-------------------------------------------------------------------------
# 変数
#-------------------------------------------------------------------------
$cs = 'cs01.example.com' # CS サーバの FQDN
$csUser= 'Administrator' # CS サーバ接続に使用するユーザ名
$csPassword = 'Passw0rd!' # CS サーバ接続に使用するパスワード
$csDomain = 'example.com' # CS サーバが所属するドメイン名
#-------------------------------------------------------------------------
# 初期設定
#-------------------------------------------------------------------------
# --- PowerCLI モジュールのインポート ---
Import-Module VMware.VimAutomation.HorizonView
Import-Module VMware.VimAutomation.Core
# --- CS サーバへの接続 ---
$hvServer1 = Connect-HVServer -Server $cs -User $csUser -Password $csPassword -Domain $csDomain
#-------------------------------------------------------------------------
# 仮想デスクトップの状態を表示
#-------------------------------------------------------------------------
Write-Output "仮想デスクトップの状態を表示します。"
Get-HVMachineSummary | Format-table -AutoSize
# --- CS サーバの切断 ---
Write-Output "", "CS サーバの接続を切断します。"
Disconnect-HVServer -Server $cs
問題のある VM を検出して、再起動を実行するスクリプト例
参考:VMware End-User Computing Blog
#-------------------------------------------------------------------------
# 変数
#-------------------------------------------------------------------------
$cs = 'cs01.example.com' # CS サーバの FQDN
$csUser= 'Administrator' # CS サーバ接続に使用するユーザ名
$csPassword = 'Passw0rd!' # CS サーバ接続に使用するパスワード
$csDomain = 'example.com' # CS サーバが所属するドメイン名
$vc = 'vc01.example.com' # VC サーバの FQDN
$vcUser = 'administrator@vsphere.local' # VC サーバ接続に使用するユーザ名
$vcPassword = 'Passw0rd!' # VC サーバ接続に使用するパスワード
$baseStates = @('PROVISIONING_ERROR',
'ERROR',
'AGENT_UNREACHABLE',
'AGENT_ERR_STARTUP_IN_PROGRESS',
'AGENT_ERR_DISABLED',
'AGENT_ERR_INVALID_IP',
'AGENT_ERR_NEED_REBOOT',
'AGENT_ERR_PROTOCOL_FAILURE',
'AGENT_ERR_DOMAIN_FAILURE',
'AGENT_CONFIG_ERROR',
'UNKNOWN')
#-------------------------------------------------------------------------
# 初期設定
#-------------------------------------------------------------------------
# --- PowerCLI モジュールのインポート ---
Import-Module VMware.VimAutomation.HorizonView
Import-Module VMware.VimAutomation.Core
# --- CS サーバへの接続 ---
$hvServer1 = Connect-HVServer -Server $cs -User $csUser -Password $csPassword -Domain $csDomain
# --- View API 連携サービスを取得 ---
$Services1= $hvServer1.ExtensionData
# --- VC サーバへの接続 ---
Connect-VIServer -Server $vc -User $vcUser -Password $vcPassword
#-------------------------------------------------------------------------
# 問題の仮想デスクトップ検出と再起動
#-------------------------------------------------------------------------
Write-Output ""
if ($Services1) {
foreach ($baseState in $baseStates) {
# --- 問題の仮想デスクトップを検出 ---
$ProblemVMs = Get-HVMachineSummary -State $baseState
foreach ($ProblemVM in $ProblemVMs) {
$VM = Get-VM -Name $ProblemVM.Base.Name
# --- 問題の仮想デスクトップを再起動 ---
Restart-VMGuest -VM $VM
}
}
Write-Output "", "CS サーバの接続を切断します。"
Disconnect-HVServer -Server $cs
} else {
Write-Output "", "CS サーバの接続に失敗しました。"
pause
}
# --- VC サーバの切断 ---
Write-Output "", "VC サーバの接続を切断します。"
Disconnect-VIServer -Server $vc
以上
はじめに VMware Horizon View 7 を使って、仮想デスクトップ環境を構築する簡易手順を紹介します。なお、Horizon 8(2006)では、View Composer は廃止されたので、インストールは不要となります[…]
脚注
↑1 | PowerShell コンテンツのリポジトリ |
---|