PowerCLI. Использование Get-View. Часть 1.
У меня накопилось определенное количество информации об использовании Get-View. И чтобы все это систематизировать, в том числе и для себя, пишу данный цикл статей.
Get-View — это более продвинутая функция PowerCLI, которая позволяет получить большую гибкость в управлении виртуальной инфраструктурой. Кроме того, скорость выполнения Get-View выше, чем аналогичных командлетов PowerCLI.
Для понимания работы Get-View сравню его с командлетом Get-VM.
Если нужна информация по одной ВМ, то определим имя конкретной ВМ
Для вывода более подробной информации
Теперь запустим
Как видим, поля, выводимые командлетами Get-view и Get-VM -Name DHCP | Select * различаются.
В выводе get-view мы видим такие поля как
— Config
— Runtime
— Guest
— Summary
и др.
И через эти значения мы получаем еще больше информации.
Для удобства будем использовать переменную VM:
Теперь достаточно после переменной через точку поставить соответствующее значение, например
И здесь мы опять видим те же значения. Наберем
И сравним с выводом
Как видим, вывод командлета $VM.Summary.Guest более компактный.
Идем дальше
Но всегда необходимо использовать более простой способ, например здесь мы получим ту же информацию
Пройдясь по вложениям и узнав что доступно, можно начать выводить интересующую нас информацию одной командой
Если по всем ВМ, то
Но если мы хотим самим задать имя колонок, например вместо HostName — Name, вместо IpAddress — IP, то конструкция усложнится
Остановлюсь на этой конструкции поподробнее.
В данном примере мы
Get-View -ViewType VirtualMachine — получаем все ВМ
| Select — определяем выводимые значения.
Name — выводится имя ВМ
и, через запятую, выводим поле, содержащее IP адрес (Guest.IPAddress).
@{N=’IP’;E={[string]::Join(‘,’,$_.Guest.IPAddress)}}, где N — имя столбца E — значение выражения, которое выводится в столбце.
В данный момент не буду разъяснять значение всей конструкции, остановлюсь лишь на $_.Guest.IPAddress. По сути это тоже самое, что и $VM.Guest.IpAddress (за исключением фильтра) из прошлого примера.
Что собой представляет $VM.Guest.IpAddress?
Ранее мы использовали команду присвоения $VM = get-view –viewtype VirtualMachine –filter @{“Name”=”DHCP”}. Т.е. в переменную VM мы сохранили результат выполнения команды Get-View. Таким образом, выполняя $VM.Guest.IpAddress мы извлекаем значение Guest.IpAddress из уже имеющихся данных. Т.е. имеет место передача данных по конвейеру от одной команды к другой.
$_ — это ссылка на текущий объект в конвейере. Т.е. в данном примере на результат выполнения команды Get-View -ViewType VirtualMachine.
Примечание:
Также я встречал в статьях термин трубопровод. Так вот — это тоже самое. В оригинале рассматриваемый нами термин именуется pipeline, который переводится на русский в том числе и как трубопровод.
А если нужны данные по двум параметрам? Например по IP-адресу и имени в гостевой ОС? Тогда просто через запятую добавляем еще одно поле
Данная команда выводит информацию по всем ВМ.
Если же нужно про конкретную, то применяем фильтр (который мы уже использовали ранее)
Ну и в заключении первой части визуально продемонстрирую разницу в выполнении команд. А поможет в этом команда Measure-Command -Expression {Выражение}, про которую я писал в статье Время выполнения команды в VMware vSphere PowerCLI.
Напомню, что Measure-Command лишь замеряет время выполнения команды, но не выводит результат ее выполнения.
Как видим, 45 миллисекунд у Get-View против 130 мс у Get-VM.