Показаны сообщения с ярлыком PowerCLI. Показать все сообщения
Показаны сообщения с ярлыком PowerCLI. Показать все сообщения

среда, 14 марта 2018 г.

PowerCLI. Запуск скрипта после завершения всех активных задач.

На форуме VMTN, где я являюсь активным участником, был размещен вопрос "script to call other script when no tasks running in vCenter". Задачка мне показалось интересной, а решение - полезным, я взялся. В результате появилась весьма короткий командлет.

Do {Wait-Event -Timeout 10; Write-Host State: Running} While ((Get-Task).State -eq 'Running'); Script.ps1
Как он работает.
Прежде всего давайте посмотрим как выглядит вывод команды Get-Task
Get-Task

Как видим, выводятся как задачи, запущенные нами, так запущенные системой (vSphere).
Притом задачи отражаются в выводе также и после завершения. 

Мы должны дождаться выполнения всех задач и только после этого запустить какой скрпит/команду. Поэтому используем условие (Get-Task).State -eq 'Running'

В цикле While через заданный промежуток времени (в данном случае 10 секунд)  проверяется статус задач. Если статус Running, то выводится соответствующее сообщение, показывающее что командлет усердно выполняет свою задачу. Как только статус задач изменяется на Success, мы выходим из цикла While, после чего выполняется нужный нам скрипт Script.ps1 (который должен лежать папке, указаной как место жительства скриптов по умолчанию). 
Вот собственно и все.


пятница, 9 февраля 2018 г.

PowerCLI. Get-View. Использование фильтров. Регулярные выражения.

Использование фильтрации вывода результатов командлета Get-View задача не очень простая. В том плане, что обычные приемы, применяемые как в случае с PowerCLI, так и PowerShell не всегда срабатывает. 

пятница, 2 февраля 2018 г.

PowerCLI. Heartbeat Datastore

В прошлой статье PowerCLI. Использование API. Get-VIObjectByVIView я исследовал объекты, применяя Get-VIObjectByVIView, а тажке Get-Member с фильтром -MemberType Properties.
И обещал рассмотреть командлет получения хранилищ, используемых для Heartbeat Datastore.

Поэтому на этот раз все же рассмотрю вопрос с Heartbeat Datastore и одновременно исследуя командлет Get-Member с фильтром -MemberType Method. Также приведу аналоги командлета, в том числе с использованием Get-View.

Поскольку выделяется целая статья, то можно и дать немного теории про Heartbeat Datastore.
Когда master хост в vSphere HA не может связаться со slave хостом по сети управления, master использует Heartbeat Datastore  чтобы определить тип сбоя:
- выход из строяMaster не может получить сигналов доступности от хоста ни по сети управления, ни по сети хранилищ;
разделение сети. Master видит хосты через Heartbeat Datastores, но не видит хосты через сеть управления. В этом случае в каждом сегменте у нас получится два хоста Master;
изоляция хоста. Хост полностью выпадает из сети управления, не может пинговать Isolation Address, но видит хранилища (а значит не вышел из строя).

четверг, 1 февраля 2018 г.

PowerCLI. Использование API. Get-VIObjectByVIView.

Ранее, в статье PowerCLI. Использование Get-View. Часть 2. я упоминал командлет Get-VIObjectByVIView в контексте совместного использования командлетов Get-View и Get-VM. 

В данной статье я хочу рассказать про использование данного командлета немного подробнее. 

Напомню, что Get-VIObjectByVIView - это командлет, который конвертирует  vSphere View object в VIObject. 
VIObject - это объект PowerCLI (ВМ, Хост ESXi, датасторе и т.д.)

Но применение Get-VIObjectByVIView не ограничивается только  лишь случаями совместного использования командлетов Get-View и Get-VM.
Для начала немного теории.

В VMware vSphere имеется application programming interface (API), что переводится как программный интерфейс приложения
API (application programming interface) - это набор готовых классов, функций, процедур, структур и констант. Вся эта информация предоставляется самим приложением (или операционной системой). При этом пользователю не обязательно понимать, что это API технология обеспечивает взаимодействие модулей. Цель предоставленной информации – использование этих данных при взаимодействии с внешними программами.
В VMware PowerCLI есть два способа использования VMware vSphere API. 
1. Использование свойства ExtensionData, имеющееся у большинства объектов PowerCLI. Свойство ExtensionData является прямой ссылкой на vSphere API-объект, связанный с объектом PowerCLI.
2. Использование командлета GetView для извлечения объекта API vSphere, связанного с объектом PowerCLI.

Для лучшего понимания VMware vSphere API и Get-VIObjectByVIView рассмотрим пример получения информации о хранилищах, используемых для Heartbeat Datastore.
Примечание: Heartbeat Datastore служит для обработки сбоев в VMware HA. 

понедельник, 29 января 2018 г.

PowerCLI. Использование хеш таблиц (hash tables).

В прошлых статьях я рассказал как можно одной командой вывести значения, которые содержатся на разных уровнях вложенности. Например значения из Сonfig.tools и .Guest вывода командлета Get-View -ViewType VirtualMachine. Несомненно это очень удобно - вместо последовательного выполнения этих командлетов и выискивания глазами интересующих нас полей мы получаем все в одном месте, и при этом не видим ничего лишнего.

четверг, 25 января 2018 г.

PowerCLI. Использование Get-View. Часть 2.

Во второй части я рассмотрю различные варианты совместного использования Get-View и Get-VM, приведу пример как можно реализовать выполнения одной и тоже задачи с помощью этих командлетов, затрону вопросы их производительности.

Командлеты Get-View и Get-VM совершенно разные, т.е. их выходные данные несовместимы между собой. А имеются ли способы как-то "подружить" их? Ответ: Да, есть! Рассмотрим их.

Если мы выполним
$VM = get-view –viewtype VirtualMachine –filter @{“Name”=”DHCP”}
$VM | Start-VM
То получим ошибку.
Но если используем Get-VIObjectByVIView, 
$VM | Get-VIObjectByVIView | Start-VM
Команда успешно выполнится.

среда, 24 января 2018 г.

PowerCLI. Использование Get-View. Часть 1.

У меня накопилось определенное количество информации об использовании Get-View. И чтобы все это систематизировать, в том числе и для себя, пишу данный цикл статей.

Get-View - это более продвинутая функция PowerCLI, которая позволяет получить большую гибкость в управлении виртуальной инфраструктурой. Кроме того, скорость выполнения Get-View выше, чем аналогичных командлетов PowerCLI. 

пятница, 19 января 2018 г.

Использование PowerCLI для установки "Сheck and upgrade vmware tools before each power on"

Настройка проверки и обновления vmware tools перед каждым включением ВМ возможна в том числе и с помощью Update Manager. Поэтому прежде чем перейти собственно к вопросу, обозначенному в заголовке, рассмотрю некоторые моменты, касающиеся самого процесса обновления VMware Tools, не затронутые в прошлой статье Обновление VMware Tools с использованием VUM (Update Manager). Там не все так просто, поэтому остановлюсь на них поподробнее сейчас.

среда, 17 января 2018 г.

Обновление VMware Tools с использованием VUM (Update Manager)

Также в данной статье будут приведены некоторые команды PowerCLI для получения статуса VMware Tools.

Я как-то всегда надеялся на  VMware vSphere Update Manager (VUM), в том числе и при обновлении VMware Tools. До сегодняшнего дня.
Еще 14.12.2017 вышла версия VMware Tools 10.2.0. В статье VMware обновила пакет VMware Tools до версии 10.2.0 пишут: "Кстати, в онлайн-репозитории VMware версии 10.2 на момент написания заметки еще не было, но скоро он должен обновиться."
И вот я собственно сижу, жду. Сегодня задумался над тем, а где собственно обновления?

вторник, 16 января 2018 г.

Время выполнения команды в VMware vSphere PowerCLI

Для того, чтобы узнать время выполнения команды в VMware vSphere PowerCLI, необходимо заключить ее в Measure-Command -Expression {КОМАНДА}. Например:
Measure-Command -Expression {Move-VM -VM VM-CLI -Datastore Huawei-1} 
Таким образом можно узнать время миграции ВМ с одного стораджа на другой.

Следует отметить, что данная команда, показывая время выполнения, не выводит сам результат выполнения исходной команды. 

Еще один способ - это использование методов "StartExecutionTime" и "EndExecutionTime" уже после выполнения замеряемой команды 

$command = Get-History -Count 1  
$command.EndExecutionTime - $command.StartExecutionTime


Однако использование StartExecutionTime" и "EndExecutionTime" дает более грубые результаты. 




понедельник, 15 января 2018 г.

PowerCLI: включение SSH на хостах ESXi

Мою шпаргалку по использованию PowerCLI начну со статьи о SSH (включение, отключение, статус). 

Попробую охватить различные сценарии, в частности включение доступа по SSH:
- на всех хостах ESXi;
- на определенном хосте ESXi;
- на определенных нескольких хостах ESXi;
- для определенного кластера;
а также получение статуса SSH на хостах ESXi.