Você precisa exportar VMs do Hyper-V e transferi-las de um host para outro? E que tal exportar uma VM da sua estação de trabalho de desenvolvimento para um host do Hyper-V em produção? Se sim, você veio ao lugar certo!
Neste artigo, você aprenderá como exportar e importar uma máquina virtual usando o Gerenciador do Hyper-V e o PowerShell. Pronto? Vamos lá!
Pré-requisitos
Este artigo será um tutorial. Se você planeja acompanhar passo a passo, precisará do seguinte:
- PowerShell 7 ou Windows PowerShell 5.1 – Este tutorial se concentrará no PowerShell 7, mas os comandos funcionarão com o Windows PowerShell 5.1.
- A Windows Server with Hyper-V enabled – This tutorial is based on the insider preview released March 2021, but any Windows Server from 2012R2 onward will suffice.
- A virtual machine guest – This tutorial is using an Alpine Linux guest because it’s light on resources. You can use any guest Operating System you like.
- A local Windows user account in the local administrators group on the Hyper-V host.
Passos para Exportar VMs do Hyper-V
Se você não é fã da linha de comando ou apenas tem uma única VM para salvar no disco, o gerenciador do Hyper-V é uma escolha sólida. Supondo que você esteja no seu host do Hyper-V e tenha uma máquina virtual em execução:
1. No menu de pesquisa do Windows, digite “hyper”. O console do Gerenciador do Hyper-V deve aparecer para você. Se sim, clique nele para abrir.
2. Encontre a VM a ser exportada, clique com o botão direito sobre ela e clique em Exportar.

3. Em seguida, escolha uma pasta para salvar a VM e sua configuração e clique em Exportar.

O local que você escolher para salvar deve ter espaço de armazenamento suficiente para a VM exportada. Isso pode variar. Lembre-se de que você pode ter alocado 60 GB para o disco, mas isso não significa que o disco da VM cresceu para 60 GB.
Assim que o Hyper-V iniciar o processo de exportação, você verá o status da exportação na janela do Gerenciador do Hyper-V.

4. Agora, confirme se todos os arquivos necessários estão presentes. Você deverá ver três subpastas. Essas subpastas contêm todos os arquivos necessários para iniciar a VM exportada; Snapshots, Discos Rígidos Virtuais e Máquinas Virtuais.

- A pasta Snapshots contém informações de snapshot para a VM. A pasta pode estar vazia se não houver snapshots para a VM. Nesta pasta, você verá as extensões de arquivo VMCX, VMRS e VMGS. O arquivo binário VMCX contém informações de configuração específicas para sua VM exportada. O arquivo binário VMRS contém informações de estado de execução da VM. Sem este arquivo, a VM não pode inicializar. Por último, mas não menos importante, há o arquivo VMGS. Não tenho certeza para que serve esse arquivo. Se você souber, deixe um comentário.
Se você tem experiência anterior com o Hyper-V, pode ter notado algo diferente sobre as extensões de arquivo. A partir do Windows Server 2016, o Hyper-V não usa mais arquivos XML para informações de configuração e, em vez disso, mudou para arquivos binários. Leia mais sobre essas novas extensões.
Se a sua Máquina Virtual tiver mais de um ponto de verificação, você verá múltiplos arquivos VMCX, VMRS e VMGS para cada ponto de verificação que a VM possui.

- A pasta de Discos Rígidos Virtuais contém todos os arquivos de imagem de disco rígido ou *.vhdx para a VM. O arquivo AVHDX ou Disco rígido virtual automático é um disco de diferenciação usado para pontos de verificação de máquina virtual. Se sua máquina virtual tiver mais de um ponto de verificação, você verá vários arquivos AVHDX.

- A pasta de Máquinas Virtuais contém os arquivos de configuração da VM usados para inicializar a VM. Semelhante à pasta de Instantâneos, aqui você também verá arquivos binários VMCX, VMRS e VMGS.

Se as três pastas estiverem presentes e contiverem arquivos, sua exportação foi bem-sucedida.
Usando o PowerShell para Exportar uma VM
Se você é fã da linha de comando ou tem muitas VMs para exportar, usar o PowerShell para exportar uma VM é uma ótima opção. Para exportar um Hyper-V com o PowerShell, use o Export-VM
cmdlet. Para fazer isso, assumindo que você está no seu host Hyper-V e sua VM está offline:
1. Abra um console PowerShell.
2. Consulte o host Hyper-V para obter um inventário de suas VMs e o nome da VM a ser exportada. Este tutorial exportará uma VM chamada Alpine Linux 01
.

Export-VM
command3. Crie uma pasta para exportar a VM. Este tutorial exportará a VM para C:\Export_VM.
4. Agora exporte a Máquina Virtual usando o cmdlet Export-VM
, fornecendo o nome da máquina virtual para o parâmetro Name
, o caminho para a pasta onde deseja salvá-la para o parâmetro Path
e o parâmetro PassThru
.
O parâmetro
PassThru
é opcional para retornar o objeto VM sendo exportado. Caso contrário,Export-VM
não apresentará nenhum resultado.

Quando uma VM está em execução,
Export-VM
não salvará automaticamente a memória. Se desejar salvar o conteúdo da memória em execução na VM, use o parâmetro-CaptureLiveState CaptureSavedState
comExport-VM
. Saiba mais sobre a tecnologia usada para capturar a memória.
5. Agora remova a VM do Hyper-V. Não se preocupe! Você a salvou!
Usando o Gerenciador do Hyper-V para Importar uma VM
Depois de exportar a VM, ocorreu um desastre e a VM desapareceu. Sem problemas! Você já a exportou para o disco. Vamos recuperá-la. Para fazer isso, supondo que você esteja novamente no host do Hyper-V:
1. Abra o Gerenciador do Hyper-V.
2. Clique no item de menu Importar Máquina Virtual localizado no lado direito da janela do Gerenciador do Hyper-V. Você será apresentado ao assistente Importar Máquina Virtual. Clique em Avançar.

3. Em seguida, insira o caminho para a máquina virtual exportada que deseja importar e clique em Avançar. Para este tutorial, a VM está salva em C:\Export_VM\Alpine Linux 01.
Ao contrário da importação com PowerShell, o assistente localizará o arquivo VMCX da VM para você.

4. Assim que o Hyper-V descobrir os arquivos de configuração da VM dentro da pasta (neste exemplo, C:\Exported_VM\Alpine Linux 01\Virtual Machines\), o Hyper-V pedirá que você selecione uma máquina virtual para importar. Escolha a VM que deseja importar e clique em Avançar.

5. Em seguida, escolha o tipo de importação que deseja realizar. Primeiro, vamos explorar as opções com mais detalhes.
Ao escolher a opção ‘Registrar a máquina virtual no local (usar ID exclusivo existente)’, você está assumindo que os arquivos da VM exportada estão em sua localização final, o que significa que você não está movendo a VM para uma nova pasta. Os arquivos da VM exportada tornam-se o estado em execução da máquina virtual. O UID não muda.
O UID é o que o Hyper-V usa para identificar uma máquina virtual. Se o Hyper-V detectar que o mesmo UID está atualmente registrado, você receberá um erro.
Ao restaurar a máquina virtual, você pode escolher uma localização ou usar a localização padrão do Hyper-V para que os arquivos da máquina virtual exportada sejam copiados.
Ao copiar a máquina virtual, é semelhante a restaurar uma VM exportada, mas com um novo ID exclusivo (UID). Um novo UID torna possível implantar a mesma máquina virtual várias vezes nos mesmos hosts do Hyper-V ou em hosts diferentes.
Tipo de Importação Copiar a máquina virtual. Copiar a VM irá gerar um novo ID único (UID). Cada VM do Hyper-V é identificada por um UID. Esta opção está bem por agora, então clique em Próximo.

6. Como você escolheu a opção Copiar, você pode alterar o local onde os arquivos da máquina virtual serão armazenados. Clique em Próximo para aceitar as configurações padrão deste tutorial.

7. Por fim, escolha um local para a VM conhecido como Pasta de Armazenamento. A Pasta de Armazenamento é onde os arquivos VHDX e AVHDX ficarão. Para este tutorial, aceite o local padrão e clique em Próximo.

8. Revise a página de resumo e, quando estiver pronto, clique em Concluir para iniciar a importação.

Quando o Hyper-V concluir a importação, retornará à janela do Gerenciador do Hyper-V, e agora você verá a VM importada, como mostrado abaixo.

Usando o PowerShell para Importar uma VM
Se importar uma VM através do Gerenciador do Hyper-V não é a sua preferência, sem problemas. Use o PowerShell! Para importar uma VM com o PowerShell, você usará o cmdlet Import-VM. Considere o seguinte cenário:
Você exportou uma VM e ela está localizada em C:\Exported_VM\. Digamos que ela tenha sido excluída acidentalmente, ou talvez seja necessária em um host Hyper-V diferente. Uma vez que já foi exportada, essencialmente está copiada e pode ser facilmente importada, portanto restaurando a VM.
Se o comando Export-VM
salva uma VM no disco, o cmdlet Import-VM
faz o oposto; ele lê uma VM do disco e a importa para o Hyper-V.
1. Supondo que você já tenha aberto um console do PowerShell e esteja no diretório onde exportou uma VM (C:\Exported_VM)). Primeiro, execute o cmdlet Get-ChildItem
com o switch Recurse
para listar todos os arquivos e faça uma nota do nome do arquivo com a extensão *.vmcx usando o código abaixo:
Você pode ver vários arquivos .vmcx dependendo se a VM exportada tinha snapshots ou não. O único que você precisa para inicializar a VM é o arquivo VMCX localizado na pasta Máquinas Virtuais.
Você pode ver uma saída semelhante ao exemplo abaixo:

2. Em seguida, use o cmdlet Import-VM
com o parâmetro Path
para especificar o arquivo de configuração das VMs (obtido na etapa anterior).
É isso! Você registrou a VM no local, usando o mesmo UID que a VM tinha quando foi exportada.

3. Agora verifique se o UID é o mesmo que o nome do arquivo .vmcx quando a VM foi exportada. Você pode fazer isso consultando o WMI usando o código abaixo:
Deveria ver uma saída semelhante ao exemplo abaixo:

O exemplo acima foi uma importação direta do arquivo de configuração da VM, e a VM manteve o UID original. Em um ambiente de produção, você pode querer gerar um novo UID para evitar que uma VM antiga seja confundida com uma nova VM. É aí que entra o parâmetro Copy
.
A importação de uma máquina virtual usando o parâmetro
Copy
copiará os arquivos da localização original (C:\Exported_VM\) para os caminhos configurados do servidor Hyper-V. Quando usado comGenerateNewId
, a VM pode ser importada várias vezes no mesmo servidor Hyper-V com um identificador único (UID) novo.
Desta vez, a VM importada não contém o mesmo UID que foi exportado. Você pode ver os UIDs antigos e novos na captura de tela abaixo:

O Hyper-V agora copia a VM para os caminhos padrão que você viu anteriormente ao importar uma VM usando o Gerenciador Hyper-V, mas atribui à VM um novo UID.
Próximos Passos
Neste guia, você aprendeu como exportar e importar uma VM do Hyper-V usando o PowerShell e o Gerenciador Hyper-V integrado.
Agora que você sabe como exportar e importar máquinas virtuais do Hyper-V, experimente configurar a Ativação Automática de Máquinas Virtuais (AVMA) para ativar máquinas virtuais do Windows Server hospedadas no Hyper-V.