Ранее мы рассмотрели PowerCLI – что это такое, как его установить и интегрировать в Windows Powershell ISE. Теперь давайте рассмотрим основной скриптинг, включая подключение, командлеты PowerCLI, а также циклы.
Основной скриптинг PowerCLI
Давайте рассмотрим несколько основных командлетов PowerCLI, чтобы увидеть, насколько легко начать извлекать информацию из нашей среды vSphere с помощью PowerCLI. Имейте в виду, что ниже приведенный материал ни в коем случае не является всеохватывающим учебником, а скорее введением в PowerCLI и способом начать запускать командлеты и изучать автоматизацию среды.
Первый командлет, который нам нужно выполнить, – это команда для фактического подключения к нашей среде vSphere. Вы можете подключиться непосредственно к хосту ESXi или к серверу vCenter.
Для подключения выполните следующую команду в сеансе PowerShell с включенным PowerCLI:
connect-viserver -server 〈вашсервер〉
При выполнении команды вам будет предложено ввести учетные данные. Введите свое имя пользователя и пароль для вашего сервера ESXi или сервера vCenter.
Одной из наиболее базовых команд, которую мы можем выполнить при подключении к ESXi или vCenter, является просмотр всех ВМ в среде. Мы используем командлет get-vm для отображения информации о гостевых ВМ.
Get-VM - Командлет get-vm перечисляет запущенные ВМ на подключенном хосте
Чтобы получить более подробную информацию от командлета get-vm
, мы можем показать полную информацию с помощью команды:
Get-VM | fl
– Отображает более подробную информацию, такую как гостевая операционная система, пулы ресурсов, уровень аппаратной версии ВМ, папка, в которой она находится, и множество других деталей.
Теперь давайте вернем конкретную полезную информацию из командлета Get-VM. Давайте найдем ВМ, находящиеся в состоянии PoweredOff. Мы можем получить информацию из командлета Get-VM
, а затем передать ее в where-object
, чтобы выбрать конкретную информацию, которую мы хотим запросить – в данном случае PowerState
. Как видите, существует множество возможностей для получения различной информации о ВМ и передачи этой информации в другой командлет PowerShell.
Get-VM | where-object {$_.PowerState –eq “PoweredOff”}
Как видите, это отображает только ВМ, находящиеся в состоянии “PoweredOff”. Это может быть чрезвычайно полезно. Мы даже можем передать результат вышеприведенной команды в командлет Start-VM. Таким образом, мы можем получить все выключенные ВМ и затем включить их.
Get-VM | where-object {$_.PowerState –eq “PoweredOff”} | Start-VM
Что насчет выключения определенных ВМ? Мы также можем это сделать. Мы можем вызвать ВМ по имени, а затем использовать командлет Stop-VMGuest, который запускает выключение операционной системы гостя.
Get-VM 〈yourvm〉 | Stop-VMguest
Если вы не хотите получать подтверждение действия, мы можем добавить параметр –confirm:false:
Предположим, мы хотим узнать, сколько виртуальных машин запущено с более чем 1 CPU назначенным. Снова мы можем использовать командлет where-object для выбора объекта NumCpu.
Get-VM | where-object {$_.NumCpu –gt 1 }
PowerCLI Циклы
Циклы позволяют выполнять одну и ту же операцию несколько раз над выбранными объектами или определенное количество раз. Например, с помощью цикла foreach мы можем выполнить определенное действие несколько раз. Он настраивается, как псевдокод ниже:
foreach ($var in $vars){
Сделайте что-то…
}
Если мы хотим быть конкретными относительно объектов, над которыми будем выполнять действие, мы можем, например, выполнить цикл по определенному списку виртуальных машин из текстового файла. Чтобы заполнить текстовый файл, мы можем запустить наш командлет Get-VM, выбрав нужные свойства, затем направить его вывод в текстовый файл. Затем мы можем использовать PowerShell для чтения текстового файла и поместить виртуальные машины в массив, по которому мы можем выполнить цикл и выполнить действие. Ниже мы добавляем новый сетевой адаптер к виртуальным машинам в списке.
Get-vm | where-object {$_.MemoryGB –eq 4 } | select -ExpandProperty Name | out-file c:\VMs.txt
$vms = get-content c:\VMs.txt
Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName "〈Имя группы портов〉" -Type "VMXNET3" –startconnected
}
Ресурсы
В интернете есть множество отличных ресурсов, включая личные блоги, официальную документацию, образцы кода и т. д. Я обнаружил, что если вы можете подумать о чем-то, что вы хотите сделать, скорее всего, кто-то уже написал строку кода PowerCLI, которая сделает то, что вам нужно. Хорошая вещь в том, что обычно вы можете найти что-то очень близкое к тому, что вы хотите сделать, и с небольшими модификациями после изучения основ, вы можете изменить его под свои нужды. Также, делая это, вы изучаете PowerCLI и узнаете, как он работает, а также как изменить код, чтобы выполнить задачу, которую вы хотите выполнить.
A great place to start with documentation and other resources is the official VMware PowerCLI release and documentation site. Here, you can download the binaries as well as the official User’s Guide.
Также существует множество книг со сценариями и примерами сценариев, которые можно разобрать и изменить. Имейте в виду сообщество администраторов VMware, которые, в большинстве своем, с радостью делятся знаниями, которые они узнали у кого-то еще, прежде чем стать опытными пользователями PowerCLI. Обратитесь к этим людям из вашего сообщества за помощью в конкретных вопросах или просто для общих принципов.
Мысли
PowerCLI очень мощный, чтобы сказать по меньшей мере. Мы только задели поверхность в приведенных выше примерах. Любые задачи, которые вы выполняете повторно или которые трудно выполнять в веб-клиенте, отлично подходят для написания сценариев с использованием PowerCLI. Фактически, это обычно то, как большинство знакомятся с PowerCLI – у них есть задача, которую они хотят выполнить автоматически, или действие, основанное на других действиях в vSphere, или снова повторяющиеся действия, которые хорошо подходят для написания сценариев.
Лучший способ изучить PowerCLI – скачать его, установить и начать использовать в лабораторной среде, например, домашней лаборатории. Полная мощь среды VMware vSphere раскрывается только тогда, когда вы увидите потенциал автоматизации управления vSphere. Так что начните создавать сценарии с PowerCLI, и вы никогда не оглянетесь назад!
Source:
https://www.nakivo.com/blog/basic-powercli-scripting-vmware-vsphere/