Script Migrate Virtual Machine Network Adapter

Script Migrate Virtual Machine Network Adapter

Este script é extremamente útil para migrar as interfaces de rede das máquinas virtuais de E1000 / E1000E para VMXNET 3. Sei que quando é necessário efetuar esta modificação, muitos especialistas optam por editar o arquivo VMX de cada máquina virtual ou até mesmo remover a interface de rede E1000 / E1000E e adicionar uma nova interface de rede VMXNET 3. Mas como todos sabem, se o MAC mudar, o sistema operacional guest irá identificar uma nova interface de rede, aí é necessário efetuar a reconfiguração do endereço IP. Dependendo da quantidade de máquinas virtuais, será muito trabalhoso (e desnecessário).

O script que escrevi consegue ler as máquinas virtuais que você escolher (pode buscar no datacenter, cluster, resource pool ou folder), verifica se todas as máquinas virtuais estão desligadas e também se todas possuem pelo menos uma interface de rede E1000, por fim lhe questiona se deseja continuar para a migração, basta aceitar para que as modificações nas máquinas virtuais sejam iniciadas. De qualquer forma recomendo que seja feito uma analise e entendimento do código antes de executar em ambiente de produção.

  • Ações que o script executa
    • Seleciona as máquinas virtuais do vCenter Server de 4 formas diferentes
      • Datacenter
      • Cluster
      • Resource Pool
      • Folder
    • Efetua diversas verificações
      • Se as VMs estão ligadas
      • Se as VMs possuem interface de rede e1000 / E1000E
    • Migração
      • Com a VM desligada, ocorre a migração da interface de rede E1000 e/ou E1000E para VMXNET 3
  • Compatibilidade
    • vSphere (ESXi e vCenter)
      • Testado nas versões 5.1, 5.5, 6.0 e 6.5
    • PowerCLI
      • Recomendo a versão 6 ou superior
  • Pré-requisitos
    • vCenter Server (Windows ou Appliance) versão 5 ou superior
      • Garantir que o vCenter esteja acessível pela rede
    • VMware vSphere PowerCLI versão 6 ou superior
  • Download
    • Github (última atualização: 16/01/2018 | Versão 2.0)
  • Dica
    • Para evitar ter que digitar o hostname e usuário administrador do vCenter Server toda vez que executar o script, é possível editar o script e substituir o valor atual das variáveis $vCenter e $vCuser. Exatamente como está na imagem abaixo  🙂 

Posts Relacionados

Ricardo é especialista em TI e apaixonado por Virtualização. É graduado em Sistemas de Informação e pós-graduado em Gestão de TI, além de possuir várias certificações Microsoft e VMware.

4 thoughts on “Script Migrate Virtual Machine Network Adapter

  1. Boa tarde!

    Tentei executar o seu script porém esta dando erro no final dele. Quando aperto “Y” para efetuaras mudanças.

    Do you want to continue? (Y or N): Y

    Get-NetworkAdapter : 02/01/2018 14:46:07 Get-NetworkAdapter Could not find VirtualMachine with name ‘M’.
    No C:\Users\antonio.melo\Documents\migrar_2.ps1:175 caractere:15
    + … $VMe1000 = Get-NetworkAdapter -VM $MyVM.Name[$VMNumTotal] | Where …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (M:String) [Get-NetworkAdapter], VimException
    + FullyQualifiedErrorId : Core_ObnSelector_SelectObjectByNameCore_ObjectNotFound,VMware.VimAutomation.ViCore.Cmdlets.Commands.VirtualDevice.GetNetworkAdapter

    Get-NetworkAdapter : 02/01/2018 14:46:07 Get-NetworkAdapter Please specify at least one of the following: VirtualMachine, Template or Snapshot.
    No C:\Users\antonio.melo\Documents\migrar_2.ps1:175 caractere:15
    + … $VMe1000 = Get-NetworkAdapter -VM $MyVM.Name[$VMNumTotal] | Where …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-NetworkAdapter], ViError
    + FullyQualifiedErrorId : Core_VirtualDeviceGetter_GetMoListFromCmdletParameter_InsufficientParameters,VMware.VimAutomation.ViCore.Cmdlets.Commands.VirtualDevice.
    GetNetworkAdapter

    Get-VM : 02/01/2018 14:46:07 Get-VM VM with name ‘M’ was not found using the specified filter(s).
    No C:\Users\antonio.melo\Documents\migrar_2.ps1:177 caractere:5
    + … Get-VM $MyVM.Name[$VMNumTotal] -Location $VMLocation | Ge …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (:) [Get-VM], VimException
    + FullyQualifiedErrorId : Core_OutputHelper_WriteNotFoundError,VMware.VimAutomation.ViCore.Cmdlets.Commands.GetVM

    M changed to VMXNET 3

    Migration OK!

    Ele esta dando o nome da VM como “M” e acaba não achando, a minha VM o nome é “Mirage”

    1. Olá Alencar, validei aqui e isso é um “bug”. Aparentemente o script só funciona se você migrar mais de uma VM, apenas com uma causa esse problema que você relatou. Valeu!

  2. Funcionou!
    Eu tive que modificar o script e alterar o valor:

    $VME1000E – Para vm’s que possuem E1000E
    $VME1000 – Para vm’s que possuem E1000 apenas.

    O script estava dando erro e não listava as vm’s com ambos os adaptadores. Então quando tenho vm’s com E1000 eu executo o script que contém a string $VME1000. O legal que se eu tenho duas ou mais vm’s que contém NICS diferentes, ou até mesmo na mesma VM adaptadores com E1000 ou E1000E o script reconhece e altera somente a E1000 e depois executo o outro script para alterar a E1000E.

    Valeu Abraços!

    1. Esse “bug” foi corrigido na versão 2.0, mas me faltou tempo para finalizar e publicar haha
      De qualquer forma, fico feliz que o script está lhe ajudando. Abraço!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *