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

среда, 22 сентября 2010 г.

PowerCLI: миграция шаблонов

На форуме VMware Communities был задан вопрос: а как мигрировать шаблоны ВМ со старых хостов 3.5 на новые, 4.1.

Разумеется, это можно сделать при помощи PowerShell :)

$Dest = Get-VMHost "destination.domain.com"
Get-VMHost | %{
  $View = Get-View $_
  if ($View.Config.Product.Version -eq "3.5.0")
  {
    foreach ($Template in (Get-Template -Location $_))
    {
      $vm = Set-Template -Template $Template -ToVM
      Move-VM -VM $vm -Destination $Dest
      Set-VM -VM $vm -ToTemplate -Confirm:$false
    }
  }
}

понедельник, 6 сентября 2010 г.

PowerCLI: сколько всего памяти выделено машинам?

Встала передо мной задача - посчитать сколько памяти выделено репликам машинам на удаленном кластере и дозаказать памяти в серверы. Можно это сделать вручную, но скучно.

Как обычно, делать веселее с PowerShell :)

$Mem = 0;
Get-Cluster "Remote Cluster" | Get-VM | Get-View |`
  %{ $Mem += $_.Config.Hardware.MemoryMB }
$Mem

Разумеется, сделать это можно не только с кластером, но и с любым другим набором виртуальных машин. Например, как в предыдущей теме, с папками:

среда, 1 сентября 2010 г.

PowerCLI: работа с папками

Что делать, если хочется работать не с каждой отдельно взятой виртуальной машиной, а сразу с группами? Ведь у вас же наверняка есть папки с виртуальными машинами, разделенными по отделам или по задачам. Как работать с папками?

Это довольно просто. Скажем, нам требуется перезагрузить все ВМ в определенной папке.



А вдруг вы ошиблись в имени папки и перезагрузили совсем не те машины?

понедельник, 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 командлетов, но как же их использовать? Есть несколько вариантов.

четверг, 29 июля 2010 г.

Грабли: апгрейд VMware Tools не проходит

Проблема:
1. "Правый клик / Guest / Install/Upgrade VMware Tools / Automated" практически сразу выдает ошибку "Error upgrading VMware Tools"
2. При апгрейде через интерфейс VMware Tools в гостевой Windows (кнопка "Upgrade") ничего не происходит.
3. Апгрейд в интерактивном режиме проходит нормально.

Существует статья в KB: Upgrading VMware Tools may fail when using Automatic Tools Upgrade in the vSphere Client

Решение: удалить VMwareToolsUpgrader.exe из %Temp% (обычно C:\Windows\Temp) и перезапустить апгрейд.

Алексей Тараненко любезно помог с PowerShell скриптом для автоматизации процесса.

понедельник, 19 июля 2010 г.

vNetwork: Массовое переключение ВМ в другую портгруппу

Предположим, у вас меняется сетевая политика для виртуальных машин и вы создаете новые портгруппы. Или вы решили мигрировать на Distributed vSwitch. Соотв. есть много (поэтому вручную не вариант, или просто лень) ВМ, подключенных в одну портгруппу, и их надо переключить в другую.

Решение - PowerShell! :)

Как это сделал я для своего тестового кластера. Сначала создал Distributed vSwitch с одним аплинком (с каждого хоста) и на нем новую портгруппу для ВМ. Затем переключил пару включенных машин вручную, проверив, что они остались доступны. И оставшиеся N-цать выключенных переключил уже скриптом:

Get-Cluster "Cluster" | Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Get-NetworkAdapter | where { $_.Name -eq "Network Adapter 1" } | Set-NetworkAdapter -NetworkName "dv VM Network" -Confirm:$false

Строго говоря, можно переключать и включенные машины, проблем с ними не возникает.

среда, 7 июля 2010 г.

Миграция инфраструктуры на новый vCenter Server

Maish Saidel-Keesing поделился PowerShell скриптом для миграции всей виртуальной инфраструктуры на новый vCenter.

Что делает этот скрипт:
  • Экспорт структуры папок с ВМ
  • Экспорт местоположения ВМ в папках
  • Экспорт разрешений (permissions)
  • Экспорт дополнительных атрибутов (custom attributes) и комментариев (notes)
  • Создание папок на новом vCenter
  • Выключение DRS/HA
  • Отключение ESX хостов от старого vCenter и подключение их к новому vCenter
  • Включение DRS/HA
  • Перемещение ВМ в соответствующие папки
  • Применение разрешений
  • Восстановление дополнительных атрибутов и комментариев
Скрипт можно скачать отсюда.

пятница, 18 июня 2010 г.

PowerShell скрипт для контроля работы vCenter

Вам случалось обнаруживать, что после очередного ребута по причине установки обновлений Windows или по любой другой причине vCenter не запустился? Anders Mikkelsen поделился секретом - контролировать vCenter, как впрочем и любой другой сервис, можно при помощи всемогущего PowerShell.

Просто поставьте в расписание запуск раз в 15-30 минут. При возникновении проблем придет электронное письмо.

Тушим все по команде UPS

Один из часто задаваемых вопросов - поддерживается ли работа vSphere с UPS? К сожалению нет, и интеграцию придется делать вручную.
Можно использовать например ghettoUPSHostShutdown.pl, но можно использовать и PowerCLI.

Что для этого требуется:
  1. Иметь Windows хост (или ВМ), следящую за ИБП. Как вариант - повесить эту задачу на vCenter (если он физический).
  2. При пропадании питания вызвать скрипт, который погасит инфраструктуру.
  3. При восстановлении питания поднять инфраструктуру, а затем ВМ.

четверг, 17 июня 2010 г.

vSphere PowerCLI: урок 4

В этом уроке я продолжу рассказ о фундаментальных понятиях PowerShell. Хотя все это должны быть про PowerCLI, без понимания PowerShell ничего вразумительного не может получиться. Впрочем, я попробую включить сюда пару командлетов PowerCLI.

Переменные в PowerShell позволяют сохранять объекты или детали в отдельной области памяти для последующего использования. Без переменных будет практически невозможно выполнять вычисления в PowerShell и даже работать с отфильтрованными данными. Особенно важным использование переменных становится при управлении виртуальной инфраструктурой в PowerCLI при возрастании объемов данных и количества объектов (например ВМ).

среда, 26 мая 2010 г.

vSphere PowerCLI: урок 3

В этом уроке я постараюсь продемонстрировать объектно-ориентированность PowerShell. Все, с чем вы работаете в PowerShell - объекты, и у этих объектов есть свойства и методы (действия). Попробуем аналогию "объекты как велосипед".

Вот самый обычный велосипед.



понедельник, 17 мая 2010 г.

vSphere PowerCLI: урок 2

Как и обещалось, в рамках уроков по PowerCLI будут так же рассказаны основы PowerShell, 2-в-1.

Для начала давайте подробнее посмотрим на механизм, известный в PowerShell как конвейер (pipe, pipeline).

Большинство командлетов (команд) предоставляют некий вывод при своей работе. Например, когда мы запустили Get-VM, был выведен список ВМ, включающий дополнительную информацию. При помощи конвейера мы можем подхватить этот вывод и обработать следующим командлетом, для чего нужно поставить символ | и написать следующую команду. Можно использовать командлет Where-Object, чтобы отфильтровать информацию на основе свойств, предоставленных предыдущим командлетом.

пятница, 14 мая 2010 г.

vSphere PowerCLI: урок 1

Уважаемые читатели, рад сообщить, что я открываю в блоге новую серию: учебник по PowerCLI, который на 50% будет учебником по PowerShell. Т.е. вам не потребуются глубокие знания PowerShell для его изучения, все будет объяснено в процессе.

Основой учебника послужит серия уроков по PowerCLI от Ricky El-Qasem (Veeam Software), но я постараюсь делать не только перевод, а также и дополнять материал.

Итак, приступим.

PowerShell скрипт для автоматического обновления хостов

VMware не так давно порадовала любителей скриптов тем, что Update Manager теперь тоже поддерживает PowerShell.

Теперь можно полностью автоматизировать процесс установки патчей на хосты.

$Baseline = Get-Baseline -TargetType host
Get-VMhost | ForEach-Object {
  Set-VMhost -vmhost $_ -state maintenance
  Remediate-Inventory -Entity $_ -Baseline $Baseline -Confirm:$False
  Set-VMhost -vmhost $_ -state connected
}

Правда у простых решений есть и ограничения. В данном случае это ограничение называется DRS в "Fully Automated" режиме.

PowerShell скрипт для контроля снапшотов

Luc Dekens, гуру vSphere PowerCLI поделился отличным скриптом для контроля снапшотов.

Скрипт может запускаться по расписанию и отсылать отчет администратору по e-mail для снапшотов старше определенного возраста. В данном случае 7 дней.

понедельник, 15 марта 2010 г.

Как найти машины с лимитами / резервами ресурсов?

Бывает, случайно выставляется лимит той или иной машине, а то и вовсе шаблону (все развернутые из шаблона машины унаследуют и лимиты). В итоге это может привести к необъяснимым порой проблемам с производительностью. Вот у нас 10 виртуальных машин - не сложно и прямо так посмотреть, покликав мышкой в vSphere клиенте, но что делать, если машин уже более 100?

пятница, 12 марта 2010 г.

Как узнать к какой ВМ подключен vmdk?

Бывают ситуации, когда в большой инфраструктуре после кучи переименований ВМ и миграций по датасторам отдельные vmdk остаются непонятно где. И надо узнать – а этот конкретный vmdk кем-то используется или просто место занимает и можно удалить.
В этом поможет простенький PowerShell скрипт, который покажет все используемые в инфраструктуре диски. Соотв. если vmdk, вызвавшего вопрос, в списке не окажется – он ни к какой машине не подключен.

пятница, 19 июня 2009 г.

Грабли. Низкая производительность ВМ.

Проблема: производительность ВМ неожиданно низкая, все очень тормозит.
Диагностика: посмотрите на загрузку памяти ВМ, если она 100%, все интенсивно свопится, а для машины при этом значительные цифры видны в Memory Ballooned, то это проблема с выставленным Memory Limit.
Лечение: Memory Limit выставить в значение, равное памяти ВМ, или в Unlimited.

Если машин много, то можно сделать это скриптами.

вторник, 24 февраля 2009 г.

четверг, 29 января 2009 г.