понедельник, 16 августа 2010 г.

vSphere PowerCLI: урок 5

Если посмотреть на урок 3, мы говорили о команде, которая выводит список всех Get- командлетов PowerCLI:
>gcm –Module vmware* -verb get
Для командлетов PowerShell принята система названия Verb-MeaningfulWord (Глагол-ЗначимоеСлово), например Get-VM.

Но Get- не единственный глагол используемый в PowerShell, вы также найдете:
  • Set-
  • New-
  • Add- (таких только 3 в PowerCLI)
Теперь мы знаем как получить список всех PowerCLI командлетов, но как же их использовать? Есть несколько вариантов.

  1. Прочитать help, идущий с командой
  2. Почитать что пишут гуру PowerCLI:
    1. Hal Rottenberg – http://halr9000.com
    2. Alan Renouf – http://www.virtu-al.net
    3. Luc Dekens – http://www.lucd.info
  3. Или просто старый добрый Google
Итак, я посмотрел на список Get- командлетов, нашел Get-VMHost и хочу теперь узнать как его использовать. Посмотреть на help можно традиционным способом, добавив "-?" параметром:
Get-VMHost -?


Список параметров - это очень хорошо, но мне бы еще и пример использования. Если посмотреть в конец help страницы, то можно увидеть как именно получить примеры.
get-help Get-VMHost -examples


Прочитав help, я понял, что Get-VMHost можно использовать, чтобы узнать на каком хосте запущена ВМ в конкретном датацентре. И я попробовал это для своей ВМ:
Get-VMHost -Location (Get-Datacenter -Name VeeamUKVsphereDatacentre) -VM (Get-VM -Name "VeeamRicky")


Разбор:


Объяснение:

а) Мы запускаем командлет Get-VMHost
б) Используем параметр -Location для передачи датацентра
в) Используем командлет Get-Datacenter для передачи объекта типа датацентр в параметр Location
г) Используем параметр -VM для передачи выбранной ВМ
д) Используем командлет Get-VM для передачи объекта типа ВМ в параметр VM

И в результате получаем информацию о хосте, на котором запущена моя ВМ "VeeamRicky".

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

А что если мы не знаем имени датацентра? Разумеется, мы можем запустить командлет Get-Datacenter и получить список доступных датацентров. У меня только один, но если у вас несколько, то вы весь список можете сохранить в переменной.
>$mydatacenters = Get-Datacenter
Если бы посмотрел в переменную, то увидели бы, что все записи индексированы. Например:
[0] VeeamUKVsphereDatacentre1                 Datacenter-datacenter-21
[1] VeeamUKVsphereDatacentre2                 Datacenter-datacenter-22
[2] VeeamUKVsphereDatacentre3                 Datacenter-datacenter-23
Поскольку это список (коллекция), то переменная хранит сразу несколько записей. В этом случае тип переменной называется "массив" (array). Получить доступ к конкретной записи можно при помощи индекса:
>mydatacenter[1]
Name                                     Id
—-                                     –
VeeamUKVsphereDatacentre2                 Datacenter-datacenter-22
Т.е. в нашем командлете Get-VMHost можно заменить Get-Datacenter на одну из записей в массиве:
>Get-VMHost -location $mydatacenter[1] -VM (Get-VM -Name “VeeamRicky”)
И, разумеется, то же самое можно проделать и со списком ВМ, который мы получим при помощи Get-VM.

<< Предыдущий урок

2 комментария:

  1. Антон, спасибо большое за понятные уроки! Жду продолжения!

    ОтветитьУдалить
  2. Спасибо за уроки.
    Подскажите, когда ждать продолжения?

    ОтветитьУдалить