Установка і використання VMWare PowerCLI для управління ESXi і vSphere

PowerCLI для VMware vSphere - неймовірно потужний інструмент, заснований на Microsoft PowerShell. PowerCLI дозволяє виконувати з командного рядка 98% рутинних операцій з управління віртуальною інфраструктурою. PowerCLI - це інструмент, який дозволяє централізовано керувати з командного рядка серверами ESXi і vCenter Server. За допомогою утиліти PowerCLI можливо створювати сценарії, контролювати стан віртуальних машин, сховищ, мереж, користувачів і автоматизувати ряд процесів.

PowerCLI можна встановити на комп'ютери з Microsoft Windows 7 / Windows Server 2008 R2 і вище і Ubuntu.

До складу PowerCLI вхід більше 1900 командлетів для управління хмарної і віртуальної інфраструктурою VMware (vSphere, vSAN, vRealize Operations Manager, vCloud Director, Site Recovery Manager, Horizon 7 and vCloud Air). При виконанні командлет відбувається звернення до API на зазначеному сервері ESXi або сервері vCenter і виконує свою роботу на цьому сервері.

Ви можете безкоштовно завантажити останню версію VMware PowerCLI 6.5 з сайту VMWare (буде потрібно реєстрація).

Установка VMWare PowerCLI не вимагає особливих коментарів - просто клацайте Next.

Якщо ви не хочете встановлювати товстого клієнта PowerCLI, ви можете встановити модуль VMware.PowerCLI з інтернету за допомогою наступної команди PowerShell.

Install-Module -Name VMware.PowerCLI -AllowClobber -Force

Для запуску консолі PowerCLI просто запустіть ярлик VMWare VSphere PowerCLI з правами адміністратора.

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

Get-Command

Отримати список команд для віртуальних машин можна так:

Get-Command * vm

Для отримання довідки про призначення, і прикладами використання того чи іншого командлет PowerCLI можна скористатися командою help (Get-Help), наприклад:

help Connect-VIServer -Full

help Connect-VIServer -Examples

Щоб почати управління віртуальною інфраструктурою, потрібно підключиться до vCenter Server або до конкретного сервера ESXi. Для цього використовується команду Connect-VIServer. Команда підключення може виглядати так:

Connect-VIServer vsphere6 -User corp \ aborisov_admin -Password VMware1!

Щоб отримати список віртуальних машин, які зареєстровані на вашому сервері ESXi (або vCenter), виконайте команду:

Get-VM

Можна вивести тільки включені ВМ:

Get-VM | Where $ _. Powerstate -eq "PoweredOn" | Select Name, VMHost, NumCPU, MemoryMB | ft

Список віртуалних машин можна вивантажити в CSV, XML або HTML файл за допомогою pipline і командлетів Export-Csv, ConvertTo-Xml, ConvertTo-Html.

інформація. PowerCLI працює в режимі тільки читання (read-only) з безкоштовним VMware vSphere Hypervisor. Це означає, що ви можете використовувати її для перегляду якихось властивостей і значень хоста і ВМ, але не зможете їх змінювати.

Ви можете вивести список снапшотов для конкретної ВМ так:

Get-VM | Get-Snapshot | Format-List

Щоб виконати VMotion і перемістити запущену ВМ на інший хост, скористайтеся командою Move-VM. Наприклад, ми хочемо перенести все ВМ з хоста esxi1 на esxi2:

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

Щоб створити нову віртуальну машину використовуються командлет New-VM:

New-VM -Name VMname1 -VMHost esxi1 -ResourcePool Production -DiskGB 20 -DiskStorageFormat Thin -Datastore EVA64VMFS

За допомогою командлетів можна взаємодіяти і з гостьовою операційною системою. Для цього на ній повинні бути встановлені VMware Tools. Ви можете оновити VMware Tools так:

Get-VMGuest VMname1 | Update-Tools

Щоб скопіювати певний файл на все ВМ, виконайте команду:
Get-VM | Copy-VMGuestFile -Source c: \ ps \ reset_id.vbs -Destination c: \ ps \ -GuestToLocal -HostUser root -HostPassword P @ ssw0rd -GuestUser administrator -GuestPassword $ uper $ trong2

За допомогою командлета Invoke-VMS можна виконати скрипт в гостьовій ОС віртуальної машини з Windows:

$ Script = ' "% programfiles% \ Common Files \ Microsoft Shared \ MSInfo \ msinfo32.exe" / report "% tmp% \ inforeport"'

Invoke-VMScript -ScriptText $ script -VM VMname1 -HostCredential $ hostCredential -GuestCredential $ guestCredential -ScriptType Bat