Módulo PowerShell do Hyper-V: Fazendo Mais Coisas

Se você estiver utilizando a plataforma de virtualização Hyper-V da Microsoft para executar máquinas virtuais, provavelmente está familiarizado(a) com o uso do Gerenciador Hyper-V. Mas você sabia que é possível realizar mais tarefas em menos tempo com o módulo Hyper-V PowerShell?

Neste tutorial, você aprenderá como gerenciar VMs do Hyper-V com o PowerShell, incluindo a criação, remoção e também explorará instantâneos de VMs!

Pré-requisitos

Para este tutorial, você precisará dos seguintes itens listados abaixo:

  • A Windows client to connect to a remote Hyper-V host. This tutorial uses Windows 10 Pro.
  • A Hyper-V host with PowerShell Remoting enabled. The tutorial’s Hyper-V host is named HYPER and is in a workgroup but an Active-Directory joined client and host will work as well.
  • A user account on the Hyper-V host in the local administrators group or in the Hyper-V Administrators group. This tutorial will use an account called localadmin.

Conectando-se a um Host Hyper-V Remoto

Para trabalhar com o Hyper-V no PowerShell, é necessário poder se comunicar de alguma forma com o host Hyper-V. Você pode fazer isso localmente, executando os cmdlets do Hyper-V PowerShell, fornecendo o nome do host Hyper-V, ou pode usar o PowerShell Remoting para se conectar diretamente ao host Hyper-V.

Neste tutorial, você fará uma conexão persistente com o host Hyper-V e executará os comandos diretamente nele.

1. Abra o PowerShell em seu computador local.

2. Execute o cmdlet Enter-PSSession fornecendo o nome do host remoto do seu host Hyper-V para o parâmetro ComputerName. Esta ação cria uma sessão interativa e permite que você execute comandos interativamente no host Hyper-V remoto.

Enter-PSSession -ComputerName HYPER -Credential (Get-Credential)

Se o seu cliente e o host Hyper-V estiverem associados ao mesmo domínio do Active Directory, você não precisa usar o parâmetro Credential.

3. Você será então solicitado a fornecer um nome de usuário e senha para se conectar ao host Hyper-V. Este nome de usuário e senha serão de um usuário administrativo local no host remoto. Uma vez conectado, você deverá ver que seu prompt do PowerShell mudou para mostrar o nome do host do Hyper-V.

Agora você está pronto para começar a executar comandos!

Criando VMs do Hyper-V com PowerShell

Supondo que você esteja agora conectado ao seu host Hyper-V usando o PowerShell Remoting, vamos começar a executar comandos criando uma VM do Hyper-V.

Criando uma VM Simples

Enquanto estiver na sua sessão PSRemoting conectada ao host Hyper-V remoto:

Execute o cmdlet New-VM para criar uma nova VM. Ao criar uma VM com o cmdlet New-VM, você tem muitas opções diferentes para escolher sobre como criá-la.

1. Neste exemplo abaixo, o tutorial está criando uma VM com:

  • A name of MyVM (HYPER)
  • 512MB de RAM (MemoryStartupBytes)
New-VM -Name "HYPER" -MemoryStartupBytes 512MB
New VM named “HYPER”

Criando uma VM Baseada em Outros Atributos de VM

Às vezes você precisa criar uma VM com atributos semelhantes a outra VM. Você pode fazer isso, mas atribua vários atributos de VM a variáveis e, em seguida, use essas variáveis ao criar a nova VM. Como exemplo:

1. Execute Get-VM para consultar os atributos de uma VM existente atribuindo a saída a uma variável, como mostrado abaixo.

$VMold = Get-VM "HYPER_old"

2. Execute o cmdlet Get-VMMemory fornecendo o nome da VM para reunir atributos (neste caso, memória) e atribua o valor da memória a uma variável.

$memory = (Get-VMMemory -VMName $VMold.name).Startup

3. Em seguida, crie uma nova VM com o cmdlet New-VM fornecendo o Nome, a geração da VM (Geração) usando a propriedade Geração da outra VM e a quantidade de memória do valor obtido da outra VM.

New-VM -Name "newVM" -Generation $VMold.Generation -MemoryStartupBytes $memory
New VM created from Old existing VM

Listando VMs Existente com PowerShell

Agora que você tem pelo menos duas VMs criadas no host Hyper-V, vamos explorar como enumerar VMs criadas. Para fazer isso:

1. Execute o cmdlet Get-VM sozinho. Quando você executa sem parâmetros, Get-VM consulta o host Hyper-V para todas as VMs existentes. Get-VM

Get-VM
Output of Get-VM run with no Parameters

2. Talvez você queira procurar apenas por uma única VM. Nesse caso, use o parâmetro -Name. O comando de código abaixo está consultando o Hyper-V para a VM criada anteriormente chamada HYPER_old. Get-VM -Name HYPER_old

Get-VM -Name HYPER_old
Output of Get-VM run with the -Name Parameter

Em seguida, talvez você precise encontrar todas as VMs que estão em um Estado específico. Sem problemas. Para fazer isso, execute Get-VM, que consulta todas as VMs, mas envie a saída para o cmdlet Where-Object.

No exemplo abaixo, o Pipe ‘|’ limita a saída do Get-VM apenas aos objetos VM com um Estado de Executando. Get-VM -NomeVM HYPER_old | Where-Object {$_.State -eq 'Executando'}

Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}
Output of Get-VM filtering out the VM with the state of Running

Iniciando e Parando VMs

Neste momento, a VM criada anteriormente provavelmente está parada. Vamos mudar isso iniciando-a e depois aprendendo também como parar VMs.

Na sessão do PowerShell do host Hyper-V remoto:

1. Execute o cmdlet Start-VM fornecendo o nome (Nome) da VM criada anteriormente com o parâmetro -Nome

Start-VM -Name NewVM
The Start-VM command starting the VM named HYPER_old

Agora que a VM está iniciada, pare-a usando o cmdlet Stop-VM fornecendo o nome da VM com o parâmetro Nome.

Stop-VM -Name HYPER_old

Assim que você executar o comando acima, verá a VM desligando conforme visto na captura de tela abaixo;

Stop-VM stopping the HYPER_old VM

Modificando VMs do Hyper-V

As VMs nem sempre permanecem iguais. Talvez você precise aumentar os recursos da CPU, ou a VM esteja consistentemente ficando sem memória. Nesse caso, o cmdlet Set-VM é seu amigo.

Como exemplo de modificação de VMs existentes, na sessão do PowerShell do host Hyper-V remoto:

Execute o cmdlet Set-VM para desligar automaticamente a VM HYPER_old que está em execução no momento. Use o parâmetro Name para especificar a VM que deseja configurar e especifique Shutdown como valor para o parâmetro AutomaticStopAction para garantir que a VM seja desligada automaticamente corretamente quando o host do Hyper-V for desligado.

Set-VM -Name HYPER_old -AutomaticStopAction Shutdown

Salvando VMs do Hyper-V

Na sessão do PowerShell remota do host do Hyper-V, talvez seja necessário salvar a VM que você criou para preservar o estado da memória da VM para uso posterior. Para fazer isso, use o cmdlet Save-VM com o parâmetro Name especificando o nome da VM que deseja salvar.

Observe que a VM que você deseja salvar deve estar em estado em execução.

Save-VM -Name HYPER_old
Save-VM cmdlet saving HYPER_old VM state.

Gerenciando Pontos de Verificação de VM do Hyper-V

Se precisar salvar o estado existente de uma VM antes de fazer alterações ou reverter alterações na VM, é recomendável aprender sobre pontos de verificação. Pontos de verificação são uma maneira conveniente de salvar rapidamente o estado do disco e da memória de qualquer VM do Hyper-V.

Enquanto estiver no host do Hyper-V, execute o cmdlet Checkpoint-VM, fornecendo o nome da VM para salvar e um nome para o ponto de verificação.

O nome do parâmetro, SnapshotName, ainda faz referência à antiga terminologia usada no Hyper-V 2012. Um snapshot é a mesma coisa que um ponto de verificação.

Checkpoint-VM -Name HYPER_old -SnapshotName MyVMSnapshot
Using Checkpoint-VM to create a Snapshot of HYPER_old VM called MyVMSnapshot

Assim que você tiver um ponto de verificação criado, você pode então usar o cmdlet Get-VMSnapshot para recuperar todos os instantâneos armazenados no host Hyper-V. Você pode ver abaixo que a VM HYPER_old tem três pontos de verificação.

Get-VMSnapshot -VMName HYPER_old
Retrieves all the Snapshots stored for HYPER_old VM

Conclusão

Se você trabalhou em todas as demonstrações deste tutorial, está bem encaminhado para gerenciar VMs do Hyper-V com o PowerShell. Agora você deve ter o conhecimento necessário para gerenciar 1, 10 ou até mesmo 100 VMs!

Que tipo de tarefas você acha que agora pode automatizar com o PowerShell e o Hyper-V?

Source:
https://adamtheautomator.com/hyper-v-powershell/