вторник, 5 апреля 2011 г.

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

Предположим, у вас меняется сетевая политика для виртуальных машин и вы создаете новые портгруппы. Или вы решили мигрировать на 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
Скопипастил отсюда

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

  1. Что происходит когда адаптеров у ВМ больше одного? И почему ВМ должна быть выключена? Руками на включенной ВМ проходит на раз.

    Похоже что второй адаптер (n-ый) в Вашем случае остается там где он был. Поправьте скрипт (или я поправлю, но завтра).

    ОтветитьУдалить
  2. Сразу скажу скрипт не мой :)
    Переключается только первый адаптер, остальные остаются в исходных портгруппах.
    Если нужно менять у включенных VM (сам я не тестировал), то нужно просто поменять {$_.PowerState -eq "PoweredOff"} на {$_.PowerState -eq "PoweredOn"}.

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