Установка и использование модуля VMware PowerCLI для управления ESXi и vSphere

Установка и использование модуля VMware PowerCLI для управления ESXi и vSphere

VMware vSphere PowerCLI — это набор модулей PowerShell, позволяющий администрировать компонентами инфраструктуры VMware из командной строки. Вы можете использовать PowerCLI для получения состояния виртуальных машин, хранилищ, сетей, пользователей, управлять различными настройками, создавать новые объекты и использовать PowerShell в скриптах автоматизации ESXi, vCenter Server, vSphere, vSAN и других продуктов VMware.

На данный момент VMware разрабатывает версию PowerCLI только для PowerShell Core (7.0+). Эта версия PowerShell является кроссплатформенной, и может использовать как в Windows, так и в Linux или macOS. Для старых модулей PowerCLI под Windows PowerShell 5.x выпускаются только исправления безопасности. Рекомендуется использовать обновленную версию PowerShell Core.

Установка VMware PowerCLI в Windows

Вы можете установить модуль VMvware PowerCLI в Windows в онлайн или офлайн режиме.

Для онлайн установки модуля PowerCLI из PowerShell Gallery выполните команду:

Install-Module -Name VMware.PowerCLI

До версии vSphere 6.5 модуль PowerCLI распространялся в виде MSI установщика.

Если нужно установить модуль только для текущего пользователя:

Install-Module VMware.PowerCLI -Scope CurrentUser

По умолчанию из PowerShell Gallery устанавливается последняя версия PowerCLI. Если вам нужно установить определенную версию PowerCLI, можно вывести полный список версий и установить нужную:

Find-Module -Name VMware.PowerCLI -AllVersions|select version
Install-Module -Name VMware.PowerCLI -RequiredVersion 12.1.0.17009493

установка определенной версии powercli

В процессе установки вам будет предложено обновить Nuget провайдер. Также подтвердите установку из недоверенного репозитория PowerShell Gallery (можно сделать его доверенным с помощью командлета
Set_PSRepository
).

Проверьте, что модули PowerCLI установлены и выведите их версии:

Get-Module -ListAvailable VMware* | Select Name,version

вывести список модулей vmware powercli установленных на компьютере

Для обновления версии PowerCLI достаточно выполнить команду:

Update-Module -Name VMware.PowerCLI

Если в Windows установлен модуль управления пакетами Choco, вы можете найти модуль PowerCLI в репозитории:

choco search vmware

и установить его:

choco install vmware-powercli-psmodule

Модуль powercli в winget пока не доступен.

Если вы хотите установить PowerCLI на изолированном от интернета компьютере, можете использовать офлайн установщик.

  1. Скачайте zip архив с модулем PowerCLI https://code.vmware.com/web/tool/vmware-powercli (размер zip архива с текущей версией VMware-PowerCLI 12.4.1 около 80 Мб);
  2. Распакуйте zip архив в каталог с модулями PowerShell на компьютере (список таких каталогов можно получить с помощью команды
    $env:PSModulePath
    ). Обычно используется каталог
    C:Program FilesWindowsPowerShellModules
    ;
  3. Снимите блокировку с файлов, скачанных с интернета:
    cd “c:Program FilesWindowsPowerShellModules”
    Get-ChildItem * -Recurse | Unblock-File
  4. Запустите консоль PowerShell и проверьте что модуль PowerCLI теперь доступен:
    Get-Module -Name VMware.PowerCLI –ListAvailable
Подробнее про офлайн установку модулей PowerShell описано в статье.

Для импорта модуля PowerCLI в текущую сессию, в PowerShell ISE или Visual Studio Code, выполните команду:

Import-Module VMware.VimAutomation.Core

При загрузке модуля может появиться ошибка вида:

Import-Module: File C:Program FilesWindowsPowerShellModulesVMware.VimAutomation.Sdk12.4.0.18627054VMware.VimAutomation.Sdk.psm1 cannot be loaded because running scripts is disabled on this system

В этом случае нужно настроить политику выполнения скриптов PowerShell. Чтобы разрешить запуск модуля в текущей сессии:

Set-ExecutionPolicy Unrestricted -Scope Process

Можно использовать модуль PowerCLI, установленный на другом компьютере. Для этого его нужно импортировать удаленно через PSRemoting:

$session = New-PSSession -ComputerName msk-man01

Импортируйте модуль PowerCLI на ваш компьютер:

Import-Module -PSsession $session -Name VMware.VimAutomation.Core

Не забудьте закрыть сессию после окончания:

Remove-PSSession $session

Установка модулей PowerCLI в Linux

Вы можете установить и использовать PowerCLI не только в Windows, но и в Linux. Сначала установите PowerShell Core в ваш дистрибутив Windows, а затем выполните следующие команды в консоли для установки VMware PowerCLI:

pwsh
Install-Module -Name VMware.PowerCLI

установка модуля vmware powercli в linux

Импортируйте модуль в сессию:

Import-Module VMware.PowerCLI

Основные команды PowerCLI для управления VMware vSphere и виртуальными машинами

Список командлетов в модулях PowerCLI можно получить так (доступно более 2200 команд):

Get-Command –Module *vmware*

команды в модуле vmware powercli

Чтобы при запуске модуля не появлялось предложение сбора данных через VMware Customer Experience Improvement Program (CEIP), можно отключите это уведомление:

Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false

Для подключения к vCenter Server или конкретному хосту ESXi:

Connect-VIServer

Если вы используете для сервера vCenter самоподписанный SSL сертификат, то PowerCLI запретит подключение:
Connect-VIServer Error: Invalid server certificate. Use Set-PowerCLIConfiguration to set the value for the InvalidCertificateAction option to Prompt if you'd like to connect once or to add a permanent exception for this server.
Additional Information: Could not establish trust relationship for the SSL/TLS secure channel with authority.

Чтобы игнорировать самоподписанные сертификаты:

Set-PowerCLIConfiguration -Scope AllUsers -InvalidCertificateAction Warn

Вывести список виртуальных машин, которые зарегистрированы на вашем сервере ESXi (или vCenter):

Get–VM

Вывести только отключенные ВМ:

Get-VM | Where {$_.Powerstate -ne “PoweredOn”} | Select Name, VMHost, NumCPU, MemoryMB, Version|Format-Table

Get-VM вывести список виртуальных машин в vmware vcenter из powerchell

Запустить виртуальную машину:

Start-VM -VM TestVM01

Корректная перезагрузка ВМ (через агента VMware tools):

Restart-VMGuest -VM TestVM01 -Confirm:$False

Выключить ВМ:

Shutdown-VMGuest -VM TestVM01 -Confirm:$False

Вывести список снапшотов для конкретной ВМ:

Get-VM| Get-Snapshot| Format-List

Чтобы переместить запущенную ВМ на другой хост с помощью VMotion используется команда Move-VM. Например, мы хотим перенести все ВМ с хоста msk-esxi1 на msk-esxi2:

Get-VMHost msk-esxi1|Get-Vm| Move-VM –Destination (Get-VMHost msk-esxi2)

Чтобы создать новую виртуальную машину используется командлет New-VM:

New-VM –Name testVM -VMHost msk-esxi1 –ResourcePool Production –DiskGB 10 –DiskStorageFormat Thin –Datastore MSA2000_2_Prod1

Чтобы изменить настройки виртуальной машины, используйте
Set-VM
.

С помощью командлетов PowerCLI можно взаимодействовать с гостевыми операционными системами виртуальных машин. Для этого в ВМ должны быть установлены VMware Tools. Вы можете обновить VMware Tools так:

Get-VMGuest VMname1 | Update-Tools

С помощью Invoke-VMS можно выполнить скрипт в гостевой ОС с Windows:

$script = '"%programfiles%Common FilesMicrosoft SharedMSInfomsinfo32.exe" /report "%tmp%inforeport"'
Invoke-VMScript -ScriptText $script -VM msk-dc01 -HostCredential $hostCred -GuestCredential $msk-dc01Cred -ScriptType Bat

Или можно скопировать файл на все ВМ:

Чтобы скопировать определенный файл на все ВМ, выполните команду:
Get-VM | Copy-VMGuestFile -Source C:PSget-info.ps1 -Destination C:PS - LocalToGuest -GuestUser administrator -GuestPassword p@$$w0rdes2

В модуле есть командлеты для управления кластерами, датацентрами, хранилищами и хостами ESXi:

Get-VMHost
Get-Datacenter
Get-Cluster
Get-Datastore
Get-VirtualPortGroup

Вывести список ESXi хостов в кластере:

Get-Cluster mskprod1 | Get-VMHost | sort name

Перевести определенный хост ESXi в режим обслуживания:
Set-VMhost -VMHost msk-esxi1 -State Maintenance

Подключить iSCSI LUN к хосту ESXi и создать на нем VMFS хранилище:
Get-ScsiLun -VmHost msk-esxi1 | ft
New-Datastore -Name 'new-datastore' -VMHost msk-esxi1 -Path naa.6000xxxxxxxxxxxxxxxx -Vmfs

Информация. PowerCLI работает в режиме только чтения (read-only) с бесплатным VMware vSphere Hypervisor. Это означает, что вы использовать команды для просмотра свойств хоста и ВМ, но не сможете их изменить.

Примеры скриптов PowerCLI

На сайте есть несколько примеров использования PowerCLI для получения информации об элементах инфраструктуры VMware и автоматизации некоторых действий. Вы можете использовать примеры из этих статей в качестве основы для ваших скриптов PowerCLI:

vSphere PowerCLI это мощный инструмент для управления и автоматизации инфраструктуры VMWare. В состав PowerCLI вход более 2000 командлетов для управления облачной и виртуальной инфраструктурой VMware (vSphere, vSAN, vRealize Operations Manager, vCloud Director, Site Recovery Manager, Horizon, NSX-T, VMware Cloud Services, VMware Cloud on AWS и т.д.).

VMware
Установка и использование модуля VMware PowerCLI для управления ESXi и vSphere