Перейти к содержимому

Как запустить powercli из powershell

  • автор:

Установка PowerCLI

PowerCLI запускается в PowerShell на ОС Windows , macOS и Ubuntu . PowerShell установлен по умолчанию в ОС Windows и Windows Server.

Чтобы установить PowerCLI, откройте консоль Powershell и выполните следующие шаги:

    Дайте разрешение на выполнения локальных сценариев PowerShell для текущего пользователя. Это актуально для десктопных систем, а на серверных разрешено по умолчанию.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 
Install-Module -Name VMware.PowerCLI 

При необходимости обновить PowerCLI используйте команду:

Update-Module -Name VMware.PowerCLI 

Как установить VMware PowerCLI?

Uninstall VMware PowerCLI MSI-file

VMware PowerCLI начиная с версии 6.5.1 больше не распространяется через MSI-файл для автоматической установки, последняя версия, которую можно использовать для автоматической установки осталась 6.5. Теперь установка выполняется через сам PowerShell.
Существует два способа установки PowerCLI с помощью нового метода: онлайн, который подходит для машин имеющих прямое подключение к сети Интернет и оффлайн, для машин без доступа в Интернет.
Чтобы приступить к установке новой версии VMware PowerCLI, необходимо сначала удалить старую версию, установленную с помощью MSI-файла, это можно сделать через панель управления. Для этого необходимо открыть панель управления, выбрать VMware PowerCLI и нажать правой кнопкой мыши и выбрать Uninstall.
После завершения работы мастера, стоит проверить, что папка «PowerCLI» была удалена из директории: C:\Program Files (x86)\VMware\Infrastructure\. По окончании удаления старой версией PowerCLI, можно приступать к установке новой версии.

Online установка PowerCLI на компьютере с доступом к сети Интернет

Для того чтобы выполнить установку VMware PowerCLI онлайн, потребуется выполнить следующие действия:
1. На компьютере с Интернет соединением запустить командную строку Powershell:
2. В открывшемся окне выполнить командлет:

Find-Module -Name VMware.PowerCLI

и убедиться, что модуль VMware.PowerCLI был найден в галерее PowerShell (PSGallery)

Примечание. Если ранее не было обращений к коллекции PowerShell, то может появиться сообщение о том, что существует отсутствующий или устаревший поставщик NuGet. NuGet-это поставщик управления пакетами. Они в основном используются для автоматической установки, обновления, настройки и/или удаления программного обеспечения. Чтобы принять установку правильной версии NuGet, необходимо нажать “Y».

3. Установить VMware.PowerCLI

Install-Module -Name VMware.PowerCLI -Scope CurrentUser

параметр Scope CurrentUser — указывает, что необходимо выполнить установку модуля только для текущего пользователя (это не требует привилегий администратора)
После успешной установки модулей можно проверить доступность набора команд VMware, например при помощи командлета:

Get-Command -Module *VM*

Offline устанока PowerCLI на компьютере без Интернет

Для того чтобы выполнить установку VMware PowerCLI на компьютере, где отсутствует подключение к сети Интернет, необходимо выполнить следующее:
1. На компьютере с Интернет соединением запустить командную строку Powershell:
2. В открывшемся окне выполнить командлет:

Find-Module -Name VMware.PowerCLI

и убедиться, что модуль VMware.PowerCLI был найден в галерее PowerShell (PSGallery)
2. Сохранить обнаруженный модуль VMware.PowerCLI в локальную папку, выполнить командлет:

Save-Module -Name VMware.PowerCLI -Path
  • C:\Windows\System32\WindowsPowerShell\v1.0\Modules — если необходимо, чтобы доступ к этому модулю имели все пользователи и у вас есть административные права на целевой машине
  • C:\Users\%UserName%\Documents\WindowsPowerShell\Modules — если необходимо, чтобы доступ к этому модулю имел только пользователь из под которого выполняется установка

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

date

31.03.2022

user

itpro

directory

PowerShell, VMware

comments

комментариев 16

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 Files\WindowsPowerShell\Modules ;
  3. Снимите блокировку с файлов, скачанных с интернета: cd “c:\Program Files\WindowsPowerShell\Modules” Get-ChildItem * -Recurse | Unblock-File
  4. Запустите консоль PowerShell и проверьте что модуль PowerCLI теперь доступен: Get-Module -Name VMware.PowerCLI –ListAvailable

Подробнее про офлайн установку модулей PowerShell описано в статье.

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

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

Import-Module: File C:\Program Files\WindowsPowerShell\Modules\VMware.VimAutomation.Sdk\12.4.0.18627054\VMware.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

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

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

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

pwsh
Install-Module -Name VMware.PowerCLI

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

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

Основные команды 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:

Если вы используете для сервера 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 | Where | 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 Files\Microsoft Shared\MSInfo\msinfo32.exe» /report «%tmp%\inforeport»‘
Invoke-VMScript -ScriptText $script -VM msk-dc01 -HostCredential $hostCred -GuestCredential $msk-dc01Cred -ScriptType Bat

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

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

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

Вывести список 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:

  • Проверка свободного места на VMFS хранилищах
  • Сопоставить диски в ВМ Windows с vmdk дисками
  • Поиск ВМ по IP или MAC адресу
  • Настройка параметров SNMP на хостах VMware ESXi
  • Перезапуск зависшей виртуальной машины на VMware
  • Установка обновлений Windows в шаблоны виртуальных машин
  • Бэкап/восстановление конфигурации ESXi хостов
  • Интеграция драйверов в установочный образ ESXi
  • Поиск ВМ со статусом Virtual Machine disks consolidation is needed
  • Обновление версии vm hardware
  • Настройка автозапуска виртуальных машин VMware

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 PowerCLI: Управляем облаками и всем всем всем из командной строки:

image

advbg

О рутине и борьбе с ней

Всем нам очень нравятся продукты VMware! Помимо всеми нами любимого Workstation, WMware предлагает мощнейшие средства виртуализации на корпоративном и мультикорпоративном уровне.

Располагая нескольким гипервизорами ESXi с помощью vCenter Server, установленного, например, на одну из виртуальных машин, живущей на одном из этих же гипервизоров, мы можем довольно легко управлять всеми подключенными гипервизорами, управлять всеми ресурсами, создавать, удалять, править виртуальные машины и т.д. Можем подключиться, например, с помощью vSphere Client и получить довольно приятный вид всей нашей виртуальной инфраструктуры.

Правда в один момент, эта инфраструктура может стать очень большой и неподъемной. Всякого рода администрирование в один момент может занимать слишком времени и отнимать слишком много усилий. Некоторые задачи выполнять периодично, что малость надоедает.

Возникает довольно резонный вопрос, а что из этого всего можно заскриптить и как? Вот тут к нам приходит на помощь PowerCLI.

PowerCLI это расширение для Windows Powershell, которое добавляет более 400 новых командлетов для управления Виртуальной инфраструктурой, в том числе и Cloud. Скачать продукт можно отсюда communities.vmware.com/community/vmtn/server/vsphere/automationtools/powercli. Там же располагается ссылки и на документацию, на блог и на community.

Немного о Powershell

После установки дистрибутива, запускаем ярлык PowerCLI. Откроется консоль, по сути являющейся полноценной Powershell, но с прогруженными Снапинами для управления Виртуальной инфраструктурой. Можно просто открыть Powershell и догрузить снапины из папки, где установлен PowerCLI.

Вкратце напомню о синтаксисе Powershell. Команды в нем формируются следующим образом:

Verb-Noun –Param1 String [[-Param2] int] [-Param3 short] [-SwitchParam] [-EnumParam Val1 | .. | ValN]> [CommonParameters]
Verb – как следует из определение это действие, которое нужно выполнить над Noun, подав параметры по имени или по позиции. При этом результатом исполнения будет .Net объект. Далее эти объекты записывать в переменные или можно подать их по pipeline на какой-нибудь командлет. Например:
Get-Process -name notepad | Stop-Process

Здесь мы берем все процессы с именем notepad с помощью комадлета Get-Process и передаем его по pipeline комадлету Stop-Process, который их останавливает.

Как это работает в PowerCli

Применяем эту философию для управления нашей инфраструктурой:

# Получаем виртуальную машину по имени и записываем ее в переменную
PS> $vm = Get-VM -Name DemoMachine
# Показываем
PS> $vm
Name PowerState Num CPUs Memory (MB)
—- ———- ——— ————
DemoMachine PoweredOff 1 256

Можем усложнить команду и показать другую информацию. Как в примере с notepad, берем виртуальную машину, передаем ее по pipeline на Select-Object, которая берет часть полей объекта виртуальной машины и результат передаем на Format-Table, который форматирует вывод.

PS> $vm | Select-Object Name,VMHost,Version | Format-Table -AutoSize
Name VMHost Version
—- —— ——-
DemoMachine 10.23.83.210 v7

Попробуем теперь что-нибудь изменить. Допустим, у нас добавили памяти на хостовых машинах. Одной строчкой мы можем проапгрейдить все виртуальные машины, например, в маркетинговом отделе:

PS> Get-VM –Location MarketingPool | Set-VM –MemoryMB 512 –Confirm:$false
Name PowerState Num CPUs Memory (MB)
—- ———- ——— ————
MarketingVM05 PoweredOff 1 512
MarketingVM04 PoweredOff 1 512
MarketingVM03 PoweredOff 1 512
MarketingVM01 PoweredOff 1 512
MarketingVM02 PoweredOff 1 512

Рассмотрим еще несколько красноречивых примеров:
# Делаем снапшот виртуальной машины
PS> Get-VM -Location DevelopmentPool | New-Snapshot -Name «ClearState»

# Возвращаем все виртуалные машины к снапшоту
PS> Get-VM -Location DevelopmentPool | Set-VM -Snapshot «ClearState»

# Убираем ненужные снапшоты с определенным именем
PS> Get-VM -Location DevelopmentPool | Get-Snapshot -Name «ClearState» | Remove-Snapshot

# Смотрим состояние всех datastore-ов
PS> Get-Datastore | Select Name,CapacityGB,FreespaceGB | Format-Table -AutoSize

# Смотрим какие харды стоят на девелоперских машинах
PS> Get-VM -Location DevelopmentPool | Get-HardDisk | Select Parent,Name,CapacityKB,StorageFormat

# Получаем информацию об ESX(i) хостах
PS> Get-VMHost | Select Name,Manufacturer,Model,NumCpu,MemoryTotalMB,CpuTotalMhz,ApiVersion | ft -AutoSize

Модное нынче слово облак.

Данные команды выполнялись на vSphere, но как я уже сказал подобным образом мы можем управлять и Cloud инфраструктурой. Для этого есть свой набор комадлетов.

Подключившись с облаку, нам интересно, какие у на есть виртуальные машины. Выполняем:

PS> Get-CIVM | Select Name
Name
—-
CloudVM03
CloudVM04
CloudVM01
CloudVM02
CloudVM05

Ну и, наконец, мы можем выполнять команды и над vSphere и над Cloud одновременно.

Одной строкой мы можем переместить виртуальные машины в Cloud:

PS> Get-VM –Location AccountingPool | Import-CIVapp –OrgVdc AccountingVdc
Name Enabled InMaintenanceMode Owner
—- ——- —————— ——
AccountingVM03 True False system
AccountingVM04 True False system
AccountingVM01 True False system
AccountingVM02 True False system
AccountingVM05 True False system

Вот так! Все очень просто!

Напоследок немного магии

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

PS> Get-VMGuest VM | Update-Tools

Что же в себя включает данное взаимодействие? Например, мы хотим переписать некий файл на все наши виртуальные машины (в случае под Windows) на определенное место:

PS> Get-VM | Copy-VMGuestFile -Source c:\text.txt -Destination c:\temp\ -GuestToLocal -HostUser root -HostPassword pass1 -GuestUser user -GuestPassword pass2

И самое интересное – выполняем скрипт на гостевой ОС:

PS>$script = ‘»%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.e
xe» /report «%tmp%\inforeport»‘
Invoke-VMScript -ScriptText $script -VM MyVM -HostCredential $hostCredential -GuestCredential $guestCredential -ScriptType Bat

Командлет позволяет выполнение bat/bash/powershell скриптов.

Я уверен, большинство из Вас уже почувствовали всю силу этого взаимодействия! С их помощью можно создавать, например, мощные post-provisioning конфигурации.

Вывод

Итак, PowerCLI является довольно мощным инструментом для администрирования всей Виртуальной инфраструктурой. Можно создавать сложные сценарии для всякого рода манипуляций над ней. Эти сценарии можно, например, запускать периодически или использовать для подъема среды. Можно также создавать сценарии для disaster recovery. Свойства и подход Powershell позволяют довольно легко – малым количеством команд манипулировать большим количеством объектов.

По приведенной выше ссылке можно получить полную инструкцию по использованию сего продукта. Там же в community можно спросить об интересующих Вас проблемах. Оно является одним из самых больших для powershell вообще.

  • powershell
  • vmware
  • powercli
  • автоматизация труда админа

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *