Новости Статьи VMware Veeam StarWind vStack Microsoft Nakivo Citrix Symantec События Релизы Видео Контакты Авторы RSS
Виртуализация и виртуальные машины

Все самое нужное о виртуализации и облаках

Более 6300 заметок о VMware, AWS, Azure, Veeam, Kubernetes и других

VM Guru / News / Автоматизация операций VMware Horizon 8 средствами VMware PowerCLI

Автоматизация операций VMware Horizon 8 средствами VMware PowerCLI

24/01/2023

Поддержите VM Guru!

USDT / TRC20, адрес: TCDP7d9hBM4dhU2mBt5oX2x5REPtq9QdU1




Пост:

Недавно мы писали о выходе новой версии фреймворка для автоматизации операций в виртуальной инфраструктуре средствами сценариев VMware PowerCLI 13. Одной из его частей является модуль Horizon PowerCLI module, с помощью которого можно управлять различными аспектами VDI-инфраструктуры. Сегодня мы посмотрим, как это делается.

Модуль PowerCLI для Horizon служит прослойкой для управления конфигурациями виртуальной инфраструктуры десктопов посредством View API, который можно также использовать и путем прямого доступа. Помимо этого, в рамках инструментария по управлению VDI-cредой есть и набор дополнительных функций, доступных в репозитории на GitHub.

В дополнение к View API, инфраструктура Horizon также предоставляет и RESTful API, который называется VMware Horizon Server API. Он предназначен для взаимодействия с Connection Server (подробнее об этом можно прочитать тут). 

Итого, мы имеем три основных набора инструментов:

Для начала работы с Horizon через PowerCLI вам нужно выполнить следующие действия:

  • Устанавливаем VMware PowerCLI 
  • Загружаем и устанавливаем advanced functions
  • Обращаемся к документации

1. Установка VMware PowerCLI 

Основные инструкции по установке находятся здесь. Для начала установки просто открываем Windows PowerShell Admin console и выбиваем команду:

Install-Module VMware.PowerCLI

Далее разрешаем локальное исполнение сценариев командой:

Set-ExecutionPolicy RemoteSigned

2. Установка Advanced Functions

Идем по этой ссылке в репозиторий на GitHub и загружаем пакет по кнопке Download ZIP:

Распаковываем zip-файл и копируем подпапку Hv.Helper в папке modules в одну из директорий модулей на вашем компьютере. Чтобы узнать нужный путь, нужно проверить переменную окружения $env:PSModulePath. Она может быть одной из следующих:

  • User specific: %UserProfile%\Documents\WindowsPowerShell\Modules
  • System wide: C:\Program Files\WindowsPowerShell\Modules

Разблокируем расширенные функции, чтобы их можно было исполнять. В командной строке PowerShell под администратором выполняем следующий набор команд:

dir ‘C:\Program
Files\WindowsPowerShell\Modules\VMware.HvHelper\’ |
Unblock-File

3. Обращаемся к документации

Здесь вам понадобятся 2 основных ресурса:

Теперь вам нужно загрузить нужные модули. Если хотите загрузить сразу все доступные модули, то сделать это можно командой:

Get-Module -ListAvailable VMware* | Import-Module

Если же вы хотите загрузить только модули Horizon, то нужно выполнить следующее:

Import-Module VMware.VimAutomation.HorizonView 
Import-Module VMware.VimAutomation.Core

Теперь подключаемся к Horizon Connection Server и View API, используя параметры вашей учетной записи в интерактивном режиме:

Connect-HVServer -server s1-hcs1.mydomain.com

Можно указать их и в параметрах подключения явно:

Connect-HVServer -server horizon1.mydomain.com -user demoadmin -password mypassword -domain mydomain

После этого будет создана глобальная переменная DefaultHVServers, которая содержит информацию о подключениях к серверам Horizon Connection Servers. Обратиться к ней можно через $Global:DefaultHVServers.

Самое интересное содержится в свойстве ExtensionData. Давайте назначим его переменной $Services и рассмотрим поближе:

$services=$Global:DefaultHVServers.ExtensionData 
$services 

Если вы посмотрите документацию к View API, то сможете понять назначение этих записей. Свойство ExtensionData содержит информацию о доступе к любым функциям View API. 

Давайте рассмотрим несколько примеров. Сначала используем простую команду для получения всех серверов Horizon Connection Servers в рамках пода (pod). Команда View API ниже использует сервис ConnectionServer и метод ConnectionServer_List для назначения результатов переменной $hvServers1.

$hvservers = $services.ConnectionServer.ConnectionServer_List() 
$hvservers.General

Теперь используем одну из расширенных функций для вывода списка всех виртуальных десктопов, в зависимости от состояния агента Horizon Agent в них. Это полезно, чтобы понять, в нормальном ли состоянии там находятся агенты, или они пришли в некорректное состояние ошибки.

Итак, выводим список десктопов, где юзер залогинен, но в текущей сессии он не присоединен:

$DisconnectedVMs = Get-HVMachineSummary -State DISCONNECTED 
$DisconnectedVMs | Out-GridView 

Полный список возможных состояний приведен вот тут.

Далее было бы полезно вывести список проблемных виртуальных машин, где агент находится в одном из следующих некорректных состояний:

  • 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 

Вы можете создать переменную с массивом ВМ, у которых агент находится в специфическом состоянии, например, в этом:

$ProblemVMs = Get-HVMachineSummary -State AGENT_UNREACHABLE 

Затем вы можете написать свой сценарий, который выводит десктопы, где Horizon Agent находится в одном из перечисленных некорректных состояний. Далее можно предпринять шаги по исправлению ситуации - например, перезагрузить машины, чтобы в некоторых из них ошибка исправилась (к примеру, для статуса AGENT_ERR_NEED_REBOOT).

Сценарий ниже позволяет как раз это и сделать. Вам нужно поменять параметры, специфические для вашей среды, такие как имя Connection Server, пользователь, пароль и другое. Если вы не хотите использовать пароль в открытом виде, то можете убрать его из команд Connect-HVServer и Connect-VIServer - тогда он будет запрошен в интерактивном режиме.

Также обратите внимание на параметр -WhatIf в команде Restart-VMGuest - он позволяет вам получить возможный результат исполнения команды без необходимости ее фактического исполнения.

#################################################################### 

# Get List of Desktops that have Horizon Agent in problem states. 

# Reboot the OS of each of these. 

#################################################################### 

#region variables 

################################################################### 

# Variables 

################################################################### 

$cs = 's1-hcs1.mydomain.com' #Horizon Connection Server 

$csUser = 'administrator' #Connection Server user 

$csPassword = 'mypassword' #Connection Server user password 

$csDomain = 'mydomain' #Connection Server domain 

$vc = 'vcenter1.mydomain.com' #vCenter Server 

$vcUser = 'administrator@vsphere.local' #vCenter Server user 

$vcPassword = 'mypassword' #vCenter Server password 

$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') 

#endregion variables 

#region initialize 

################################################################### 

# Initialize 

################################################################### 

# --- Import the PowerCLI Modules required --- 

Import-Module VMware.VimAutomation.HorizonView 

Import-Module VMware.VimAutomation.Core 

Set-PowerCLIConfiguration -InvalidCertificateAction Prompt 

# --- Connect to Horizon Connection Server API Service --- 

$hvServer = Connect-HVServer -Server $cs -User $csUser -Password $csPassword -Domain $csDomain 

# --- Get Services for interacting with the View API Service --- 

$services= $hvServer.ExtensionData 

# --- Connect to the vCenter Server --- 

Connect-VIServer -Server $vc -User $vcUser -Password $vcPassword 

#endregion initialize 

#region main 

################################################################### 

# Main 

################################################################### 

Write-Output "" 

if ($services) { 

foreach ($baseState in $baseStates) { 

# --- Get a list of VMs in this state --- 

Write-Host ("Get VMs with baseState: " + $baseState) -ForegroundColor Yellow 

$ProblemVMs = Get-HVMachineSummary -State $baseState 

foreach ($ProblemVM in $ProblemVMs) { 

$VM = Get-VM -Name $ProblemVM.Base.Name 

# --- Reboot each of the Problem VMs --- 

Restart-VMGuest -VM $VM 

# Add -WhatIf to see what would happen without actually carrying out the action. 

} 

} 

Write-Output "", "Disconnect from Connection Server." 

Disconnect-HVServer -Server $cs 

} else { 

Write-Output "", "Failed to login into Connection Server." 

pause 

} 

# --- Disconnect from the vCenter Server --- 

Write-Output "", "Disconnect from vCenter Server." 

Disconnect-VIServer -Server $vc 

#endregion main

Интересное:





Зал Славы Рекламодателя
Ближайшие события в области виртуализации:

Быстрый переход:
VMware Broadcom Offtopic Microsoft Veeam Cloud StarWind VMachines NAKIVO vStack Gartner Vinchin Nakivo IT-Grad Teradici VeeamON VMworld PowerCLI Citrix VSAN GDPR 5nine Hardware Nutanix vSphere RVTools Enterprise Security Code Cisco vGate SDRS Parallels IaaS HP VMFS VM Guru Oracle Red Hat Azure KVM VeeamOn 1cloud DevOps Docker Storage NVIDIA Partnership Dell Virtual SAN Virtualization VMTurbo vRealize VirtualBox Symantec Softline EMC Login VSI Xen Amazon NetApp VDI Linux Hyper-V IBM Google VSI Security Windows vCenter Webinar View VKernel Events Windows 7 Caravan Apple TPS Hyper9 Nicira Blogs IDC Sun VMC Xtravirt Novell IntelVT Сравнение VirtualIron XenServer CitrixXen ESXi ESX ThinApp Books P2V HCX vSAN Private AI VCPP VCF Workstation Labs Backup Explore vDefend Data Protection ONE Tanzu AI Intel Live Recovery VCP V2V Aria NSX DPU Update EUC Avi Community Skyline Host Client Chargeback Horizon SASE Workspace ONE Networking Ransomware Tools Performance Lifecycle Network AWS API USB SDDC Fusion Whitepaper SD-WAN Mobile VMUG SRM ARM HCI Converter Photon OS Operations VEBA App Volumes Certification VMConAWS Workspace Imager SplinterDB DRS SAN vMotion Open Source iSCSI Partners HA Monterey Kubernetes vForum Learning vRNI UAG Support Log Insight AMD vCSA NSX-T Graphics NVMe HCIBench SureBackup Docs Carbon Black vCloud Обучение Web Client vExpert OpenStack UEM CPU PKS vROPs Stencils Bug VTL Forum Video Update Manager VVols DR Cache Storage DRS Visio Manager Virtual Appliance PowerShell LSFS Client Datacenter Agent esxtop Book Photon Cloud Computing SSD Comparison Blast Encryption Nested XenDesktop VSA vNetwork SSO VMDK Appliance VUM HoL Automation Replication Desktop Fault Tolerance Vanguard SaaS Connector Event Free SQL Sponsorship Finance FT Containers XenApp Snapshots vGPU Auto Deploy SMB RDM Mirage XenClient MP iOS SC VMM VDP PCoIP RHEV vMA Award Licensing Logs Server Demo vCHS Calculator Бесплатно Beta Exchange MAP DaaS Hybrid Monitoring VPLEX UCS GPU SDK Poster VSPP Receiver VDI-in-a-Box Deduplication Reporter vShield ACE Go nworks iPad XCP Data Recovery Documentation Sizing Pricing VMotion Snapshot FlexPod VMsafe Enteprise Monitor vStorage Essentials Live Migration SCVMM TCO Studio AMD-V KB VirtualCenter NFS ThinPrint Director Memory SIOC Troubleshooting Stretched Bugs ESA Android Python Upgrade ML Hub Guardrails CLI Driver Foundation HPC Orchestrator Optimization SVMotion Diagram Ports Plugin Helpdesk VIC VDS Migration Air DPM Flex Mac SSH VAAI Heartbeat MSCS Composer
Полезные постеры:

Постер VMware vSphere PowerCLI 10

Постер VMware Cloud Foundation 4 Architecture

Постер VMware vCloud Networking

Постер VMware Cloud on AWS Logical Design Poster for Workload Mobility

Постер Azure VMware Solution Logical Design

Постер Google Cloud VMware Engine Logical Design

Постер Multi-Cloud Application Mobility

Постер VMware NSX (референсный):

Постер VMware vCloud SDK:

Постер VMware vCloud Suite:

Управление памятью в VMware vSphere 5:

Как работает кластер VMware High Availability:

Постер VMware vSphere 5.5 ESXTOP (обзорный):

 

Популярные статьи:
Как установить VMware ESXi. Инструкция по установке сервера ESXi 4 из состава vSphere.

Включение поддержки технологии Intel VT на ноутбуках Sony VAIO, Toshiba, Lenovo и других.

Типы виртуальных дисков vmdk виртуальных машин на VMware vSphere / ESX 4.

Как работают виртуальные сети VLAN на хостах VMware ESX / ESXi.

Как настроить запуск виртуальных машин VMware Workstation и Server при старте Windows

Сравнение Oracle VirtualBox и VMware Workstation.

Что такое и как работает виртуальная машина Windows XP Mode в Windows 7.

Диски RDM (Raw Device Mapping) для виртуальных машин VMware vSphere и серверов ESX.

Работа с дисками виртуальных машин VMware.

Где скачать последнюю версию VMware Tools для виртуальных машин на VMware ESXi.

Подключение локальных SATA-дисков сервера VMware ESXi в качестве хранилищ RDM для виртуальных машин.

Как перенести виртуальную машину VirtualBox в VMware Workstation и обратно

Инфраструктура виртуальных десктопов VMware View 3 (VDI)

Как использовать возможности VMware vSphere Management Assistant (vMA).

Бесплатные утилиты для виртуальных машин на базе VMware ESX / ESXi.

Интервью:

Alessandro Perilli
virtualization.info
Основатель

Ратмир Тимашев
Veeam Software
Президент


Полезные ресурсы:

Последние 100 утилит VMware Labs

Новые возможности VMware vSphere 8.0 Update 1

Новые возможности VMware vSAN 8.0 Update 1

Новые документы от VMware

Новые технологии и продукты на VMware Explore 2022

Анонсы VMware весной 2021 года

Новые технологии и продукты на VMware VMworld 2021

Новые технологии и продукты на VMware VMworld 2020

Новые технологии и продукты на VMware VMworld Europe 2019

Новые технологии и продукты на VMware VMworld US 2019

Новые технологии и продукты на VMware VMworld 2019

Новые технологии и продукты на VMware VMworld 2018

Новые технологии и продукты на VMware VMworld 2017



Copyright VM Guru 2006 - 2025, Александр Самойленко. Правила перепечатки материалов.
vExpert Badge