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

Se estiver a utilizar a plataforma de virtualização Hyper-V da Microsoft para executar máquinas virtuais, provavelmente está familiarizado com o uso do Gestor do Hyper-V. Mas sabia que pode fazer mais em menos tempo com o módulo PowerShell do Hyper-V?

Neste tutorial, vai aprender como gerir máquinas virtuais do Hyper-V com PowerShell, incluindo a criação, remoção e também irá explorar instantâneos de VM!

Pré-requisitos

Para este tutorial, vai 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.

Ligação a um Host Hyper-V Remoto

Para trabalhar com o Hyper-V no PowerShell, deve ser capaz de comunicar com o host Hyper-V de alguma forma. Pode fazê-lo localmente, executando os cmdlets do PowerShell do Hyper-V fornecendo o nome do host Hyper-V, ou pode utilizar a Remoção do PowerShell para se ligar ao próprio host Hyper-V.

Neste tutorial, vai estabelecer uma ligação persistente ao host Hyper-V e executar os comandos no próprio host Hyper-V.

1. Abra o PowerShell no 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 de forma interativa no host Hyper-V remoto.

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

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

3. Em seguida, você será 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 seu prompt do PowerShell alterado 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

Assumindo 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 com Base 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 da VM a variáveis e 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, conforme mostrado abaixo.

$VMold = Get-VM "HYPER_old"

2. Execute o cmdlet Get-VMMemory fornecendo o nome da VM para obter 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 Name, a geração da VM (Generation) usando a propriedade Generation da outra VM, e a quantidade de memória obtida da outra VM.

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

Listando VMs Existentes com PowerShell

Agora que você tem pelo menos duas VMs criadas no host Hyper-V, vamos explorar como enumerar as 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 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 State específico. Sem problemas. Para fazer isso, execute Get-VM, que consulta todas as VMs, mas encaminhe a saída para o cmdlet Where-Object.

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

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 as VMs.

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

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

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 Name.

Stop-VM -Name HYPER_old

Assim que você executar o comando acima, verá a VM desligando como 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 remoto do Hyper-V:

Execute o cmdlet Set-VM para desligar automaticamente a VM HYPER_old que está atualmente em execução. Use o parâmetro Name para especificar a VM que deseja definir e especifique Shutdown como o 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 remoto do host do Hyper-V, você pode precisar salvar a VM que cria 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 deseja salvar deve estar em estado de Execução.

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

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

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

Enquanto estiver no seu 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 à terminologia antiga 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

Uma vez que você tenha criado um ponto de verificação, você pode então usar o cmdlet Get-VMSnapshot para recuperar todos os snapshots armazenados no host Hyper-V. Abaixo, você pode ver que a VM HYPER_old possui três pontos de verificação.

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

Conclusão

Se você passou por todas as demonstrações neste 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é 100 VMs!

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

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