Comandos Essenciais do PowerShell do Hyper-V: O Que São e Como Usá-los

Gerenciar ambientes Hyper-V pode ser uma tarefa desafiadora. Assim, você precisa de uma ferramenta de gerenciamento poderosa para configurar e controlar sua infraestrutura virtual a partir de um console central. Além da interface gráfica do usuário, o Hyper-V fornece uma interface de linha de comando usando o PowerShell para gerenciamento do Hyper-V.

Neste post do blog, descrevemos como o PowerShell funciona, quais comandos do PowerShell do Hyper-V podem melhorar o desempenho da máquina virtual (VM) e como essa ferramenta de CLI pode simplificar consideravelmente o processo de gerenciamento do Hyper-V.

O que é o PowerShell?

O PowerShell é um framework de automação de tarefas e gerenciamento de configuração desenvolvido pela Microsoft, que inclui um shell de linha de comando e linguagem de script associada construída no .NET Framework e no .NET Core.

Comandos do PowerShell, também conhecidos como cmdlets, podem ser usados para automatizar várias tarefas arranjando vários cmdlets em um único script do PowerShell. A Microsoft desenvolveu mais de cem comandos principais do PowerShell que podem ser usados para realizar tarefas complexas e básicas.

O que o PowerShell Pode Fazer?

O PowerShell pode ajudar os administradores do Hyper-V a automatizar rapidamente tarefas que gerenciam sistemas operacionais (Linux, macOS e Windows) e processos associados. Ao contrário das ferramentas GUI, o PowerShell permite que você gerencie todo o sistema usando apenas a linha de comando.

Além disso, você pode salvar os comandos do PowerShell do Hyper-V necessários em um arquivo de texto (com a extensão .ps1) e então executar este script para realizar certas tarefas. Além disso, você pode agendar scripts do PowerShell para serem executados em um horário definido usando o Agendador de Tarefas.

Como Abrir o PowerShell

Existem algumas maneiras de executar o PowerShell no Hyper-V. Uma maneira fácil de acessar o PowerShell é conectar-se diretamente a um servidor Hyper-V e iniciá-lo a partir daí. Para se conectar remotamente a um host Hyper-V, precisamos garantir que a Área de Trabalho Remota esteja habilitada. Uma vez habilitada a Área de Trabalho Remota, podemos usar a utilidade de Área de Trabalho Remota e nos conectar remotamente ao servidor como faríamos com qualquer GUI (interface gráfica do usuário) do Windows Server.

Abrindo o PowerShell a partir da GUI

Para abrir o PowerShell em um sistema operacional baseado em GUI, siga estas etapas:

  1. Você precisa clicar em Iniciar e digitar PowerShell na barra de pesquisa.
  2. Clique com o botão direito no ícone do PowerShell e selecione Executar como Administrador para abrir o PowerShell em modo elevado.

Abrindo o PowerShell a partir da linha de comando

Para executar o PowerShell se estiver executando o Windows Server Core ou o Hyper-V Server, siga estas etapas:

  1. Digite PowerShell no Prompt de Comando e pressione Enter.
  2. A Windows PowerShell session should start automatically in the Command Prompt window. A PS prefix is then added to the command prompt to indicate that you have started a Windows PowerShell session.
  3. Depois de estar no PowerShell, você pode usar comandos específicos do Hyper-V no PowerShell, os quais abordamos abaixo neste post.

Configurações Remotas

Para verificar as configurações de Área de Trabalho Remota no Windows Server Core ou no Hyper-V Server, você pode iniciar a utilidade sconfig se ainda não estiver iniciada e configurá-la usando a opção 7. Além disso, uma vez conectado remotamente ao host do Hyper-V, você pode usar a opção 15 para Sair para a Linha de Comando.

Uma vez lá, você está em um ambiente regular cmd.exe – não no PowerShell. Para iniciar um ambiente PowerShell, simplesmente digite powershell na linha de comando.

PowerShell Remoto

Usando o PowerShell, você também pode interagir remotamente com o Hyper-V. Em outras palavras, você pode executar comandos do PowerShell remotamente no host do Hyper-V sem estabelecer uma conexão de Área de Trabalho Remota.

A partir da estação de trabalho de administração na qual temos as ferramentas de gerenciamento do Hyper-V carregadas, podemos executar nossos comandos do Hyper-V. Primeiro, precisamos instalar as ferramentas do Hyper-V, incluindo esses cmdlets (cmdlets).

Install-WindowsFeature RSAT-Hyper-V-Tools

Depois de carregarmos as ferramentas, podemos executar os mesmos tipos de comandos usando o parâmetro -computername apontando para nosso host do Hyper-V como na captura de tela abaixo. Passamos o nome do nosso host para o cmdlet get-vm do PowerShell.

12 Comandos Essenciais do PowerShell do Hyper-V

Há uma série de comandos eficazes do PowerShell do Hyper-V que podem tornar o processo de gerenciamento do Hyper-V fácil e simples. Vamos ver como você pode usar diferentes comandos do PowerShell do Hyper-V.

Get-Command

Vamos começar com um comando do PowerShell do Hyper-V que é útil para usuários que são novos no PowerShell e não sabem quais cmdlets devem ser usados e como. Ao executar o cmdlet Get-Command, você pode ver a lista completa de todos os cmdlets disponíveis (comandos do Windows PowerShell), funções e aliases instalados no computador.

No entanto, se desejar restringir sua pesquisa e obter a lista de comandos do PowerShell do Hyper-V que correspondem a critérios específicos, você pode usar o cmdlet Get-Command *-VM para encontrar a lista de comandos que permitem controlar e configurar VMs.

Ao alterar o parâmetro VM para VHD, você pode obter a lista completa de cmdlets usados para gerenciar discos rígidos virtuais. Assim, você pode experimentar vários parâmetros de pesquisa para obter os resultados desejados.

Get-Help

Depois de decidir qual comando do PowerShell do Hyper-V deseja usar, você pode aprender mais sobre esse cmdlet. Para esse fim, você pode usar o cmdlet Get-Help. Por exemplo, para saber mais sobre o cmdlet Get-VM, digite o seguinte:

Get-Help Get-VM

Get-VM

O comando do PowerShell Get-VM permite ver todas as VMs disponíveis em um ou mais hosts do Hyper-V. Para ver todas as VMs no host local do Hyper-V, você deve executar o cmdlet do PowerShell Get-VM.

Na tela do PowerShell, você pode ver a lista de VMs disponíveis, incluindo seus nomes, estados, uso de CPU, memória atribuída, tempo de atividade, status e versão.

Start-VM

Este cmdlet de PowerShell específico iniciar VM ajuda você a iniciar uma VM. Para esse fim, execute o seguinte comando do PowerShell do Hyper-V:

Start-VM -Name 'Windows Server 2016'

Como resultado, a VM denominada Windows Server 2016 é iniciada no seu host local do Hyper-V. Vamos verificar se a VM realmente iniciou executando o cmdlet Get-VM.

Aqui está a tradução do texto:

Além disso, você pode usar uma versão modificada do cmdlet Start-VM para iniciar VMs apenas se seus nomes começarem com Hyper-V:

Start-VM -Name Hyper-V*

Como você pode ver, a VM chamada Hyper-V Server Desktop foi iniciada com sucesso. No entanto, outra VM (Hyper-V Server 2012) já estava em um estado em execução e o PowerShell notifica você sobre isso.

Stop-VM

O cmdlet Stop-VM permite que você desligue ou desligue uma VM. Para isso, você pode executar o seguinte cmdlet:

Stop-VM -Name 'Windows Server 2016'

Como você pode ver, a VM selecionada foi desligada com sucesso através do sistema operacional convidado.

Outro exemplo é que você pode desligar as VMs cujos nomes começam com Hyper-V:

Stop-VM -Name Hyper-V* -TurnOff

Se você perceber que sua VM não está respondendo, você pode forçar seu desligamento. Para fazer isso, execute o seguinte cmdlet do PowerShell:

Stop-VM -Name 'Windows Server 2016' -Force

Observe que o desligamento forçado é semelhante a desligar a energia de um computador físico, o que pode resultar na perda de dados de aplicativos não salvos. Nesse caso, é recomendável salvar a VM para evitar perda de dados potencial. Para isso, você precisa executar o cmdlet Save-VM, que é equivalente a hibernar um computador físico:

Save-VM -Name 'Windows Server 2016'

Se você deseja salvar as VMs cujos nomes começam com Hyper-V, execute o seguinte comando do Hyper-V PowerShell:

Get-VM -Name Hyper-V* | Save-VM

Checkpoint-VM

O cmdlet Checkpoint-VM ajuda você a criar um ponto de verificação da VM do Hyper-V (também conhecido como snapshot do Hyper-V). Execute o seguinte cmdlet para criar um ponto de verificação nomeado Update1 da VM específica (Windows Server 2016):

Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1

Para verificar se a VM foi criada com sucesso, use o seguinte comando do PowerShell do Hyper-V:

Get-VMSnapshot -VMName 'Windows Server 2016'

Por outro lado, se você deseja excluir certos pontos de verificação do Hyper-V, pode usar o cmdlet Remove-VMSnapshot. Por exemplo, se quisermos excluir todos os snapshots de VM cujos nomes começam com Testing, devemos executar o seguinte cmdlet:

Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*

A captura de tela acima demonstra todo o processo de exclusão dos snapshots do Hyper-V selecionados.

Test-VHD

Este comando do PowerShell do Hyper-V destina-se a verificar se o arquivo de disco rígido virtual realmente existe e pode ser usado para implantação do Hyper-V. Este cmdlet é o seguinte:

Test-VHD -Path C:\Testing.vhd

No caso de o caminho VHD ser válido, você verá a seguinte saída na tela:

Para saber mais sobre como gerenciar discos rígidos virtuais usando cmdlets do PowerShell, recomendamos que você leia nosso post no blog sobre os conceitos básicos de trabalho com arquivos VHD e VHDX do Hyper-V.

Measure-VM

Este comando do PowerShell do Hyper-V permite coletar dados de utilização de recursos para uma VM específica. Por exemplo, execute o seguinte cmdlet para saber sobre o uso da CPU, uso de RAM, capacidade de disco e tráfego de rede para a VM chamada Windows Server 2016:

Measure-VM -VMName 'Windows Server 2016'

Observe que o cmdlet Measure-VM pode relatar os dados necessários somente após a medição de recursos ser ativada em uma VM. Para ativar a medição de recursos, use o seguinte comando do PowerShell do Hyper-V:

Enable-VMResourceMetering -VMName 'Windows Server 2016'

Get-VMNetworkAdapter

Outro cmdlet útil do PowerShell é o Get-VMNetworkAdapter, que permite identificar os adaptadores de rede virtuais da VM selecionada. Por exemplo, se você deseja encontrar os adaptadores de rede virtuais de todas as VMs, bem como do sistema operacional de gerenciamento, você deve executar o seguinte comando do PowerShell do Hyper-V:

Get-VMNetworkAdapter –All

Se tudo estiver correto, você deverá ver as seguintes informações no console do PowerShell:

Usando comandos do Hyper-V PowerShell, você pode realizar várias tarefas simples e complexas com seus adaptadores de rede do Hyper-V. Confira nosso guia sobre os cmdlets que podem ajudar a gerenciar e configurar adaptadores de rede virtuais em seu ambiente Hyper-V.

Update-VMVersion

O PowerShell possui um cmdlet que permite atualizar a versão da VM selecionada:

Update-VMVersion -Name 'TestVM'

Após executar o comando do Hyper-V PowerShell, a VM chamada TestVM pode ser atualizada para a versão atual da VM.

Get-Process

Este comando do Hyper-V PowerShell pode ajudá-lo a ver todos os processos atuais em seu computador local. Após executar o cmdlet Get-Process, você pode obter as seguintes informações na tela:

Esta tabela inclui informações sobre:

  • o número de identificadores que o processo abriu
  • a quantidade de memória não paginada que o processo está usando
  • a quantidade de memória paginada que o processo está usando
  • o tamanho do conjunto de trabalho do processo
  • a quantidade de memória virtual que o processo está usando
  • a quantidade de tempo do processador que foi alocada para todos os processadores
  • o ID do processo
  • o nome do processo

Para estreitar a pesquisa e encontrar um processo específico, você deve digitar o nome ou ID do processo. Por exemplo, se você quiser aprender como o Microsoft Word está funcionando atualmente, deve percorrer a lista de todos os processos em execução e encontrar a linha com as informações sobre o Microsoft Word (ou seja, WinWord), incluindo o seu ID de processo. Usando o ID do processo, você pode executar o seguinte comando para obter os dados necessários:

Get-Process -ID 8892

Além disso, os dados sobre os processos atuais do WinWord podem ser apresentados em outro formato, ou seja, como uma lista de propriedades. Execute este comando para obter uma saída mais detalhada:

Get-Process WINWORD | Format-List *

Depois de obter os dados do processo, você pode executar os seguintes comandos:

  • Stop-Process permite que você pare um ou mais processos em execução.
  • Wait-Process permite que você aguarde um ou mais processos em execução serem parados antes de habilitar qualquer outra entrada.
  • Start-Process permite que você inicie um ou mais processos no computador local.
  • Debug-Process permite que você anexe um depurador a um ou mais processos em execução no computador local.

Por exemplo, se você quiser iniciar o aplicativo Notepad do PowerShell, você deve executar o seguinte comando:

Start-Process -FilePath "notepad.exe"

Quando você tiver aberto o PowerShell no modo “normal”, mas precisar executar o PowerShell no modo elevado para obter acesso aos direitos administrativos, execute o seguinte comando do PowerShell do Hyper-V:

Start-Process -FilePath "powershell" -Verb RunAs

Por outro lado, se um dos processos em execução parar de responder, você pode executar o cmdlet Stop-Process para interromper a aplicação com falha:

Stop-Process -Name "notepad"

Neste caso, todas as instâncias do aplicativo Notepad no computador local são interrompidas.

Cada instância do Notepad tem seu próprio ID de processo. Se você quiser interromper uma instância específica do Notepad, deve usar o parâmetro ID no cmdlet Stop-Process. Para isso, primeiro execute o cmdlet Get-Process, encontre os processos ativos necessários e identifique o ID do processo que deseja interromper.

Por exemplo, você pode interromper o processo específico do Notepad identificando seu ID de processo e executando o seguinte comando do PowerShell do Hyper-V:

Stop-Process -ID 5052

Como resultado, apenas o processo selecionado do Notepad é interrompido.

Esses comandos do PowerShell permitem que você detecte um processo que está consumindo recursos indesejados e reduzindo o desempenho do Hyper-V para encerrar esse processo.

Onde-Object

Este comando do PowerShell do Hyper-V permite filtrar objetos de pipeline e encontrar os dados exatos de que você precisa. Neste caso, você precisa criar um script do PowerShell no qual especifica quais objetos podem ser passados ao longo do pipeline. Usando vários critérios de pesquisa, você pode encontrar qualquer objeto no computador local.

Por exemplo, se você deseja localizar os processos que pararam de ser executados, use este cmdlet:

Get-Service | Where-Object {$_.Status -eq 'Stopped'}

Outro exemplo de uso do cmdlet Where-Object é quando você deseja encontrar um cmdlet específico. O seguinte comando do PowerShell do Hyper-V pode ajudá-lo a encontrar todos os cmdlets que começam com Wait:

Get-Command | Where-Object {$_.Name -like '*wait*'}

O próximo cmdlet Where-Object pode ajudá-lo a encontrar um processo específico com base apenas em seu nome. Ao executar o seguinte comando, você pode obter uma lista de todos os processos cujos nomes começam com sys:

Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}

Como Criar uma VM do Hyper-V Usando o PowerShell

Uma das poderosas características integradas do Hyper-V é permitir o uso do PowerShell para operações de gerenciamento. Entre as muitas coisas que podemos fazer com o PowerShell no Hyper-V está criar máquinas virtuais. Vamos dar uma olhada em um conjunto de comandos do PowerShell do Hyper-V para criar novas VMs.

Comandos do PowerShell para criar uma nova VM

Para criar uma nova VM de Geração 2 com um novo disco rígido VHDX de 60 GB e conectá-la a um switch virtual específico (neste caso, ” ExternalSwitch“), execute os seguintes comandos do PowerShell no seu host Hyper-V.

  1. Criando uma VM:

    new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:\hyper-v\discos virtuais\WSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch"

  2. Para adicionar uma unidade de DVD junto com uma imagem ISO para inicializar, podemos executar comandos adicionais:

    Add-vmscsicontroller -vmname WSTEST

    Add-vmdvddrive -vmname WSTEST -controllernumber 1 -controllerlocation 0 -path D:\ISO\meu.iso

  3. Se quisermos criar um disco de tamanho fixo e anexá-lo à nossa VM, podemos executar o seguinte para criar um VHDX de tamanho fixo e anexá-lo à nossa VM:

    novo-vhd -caminho "d:\hyper-v\discos rígidos virtuais.wstest.vhdx" -tamanhoembytes 60GB -fixo

    adicionar-unidadedediscorígido-vm -nomedavm WSTEST -caminho "d:\hyper-v\discos rígidos virtuais\wstest.vhdx"

Conclusão

O PowerShell pode parecer intimidante no início, mas uma vez que você aprenda a trabalhar com ele, pode descobrir rapidamente como usar os comandos do Hyper-V PowerShell e simplificar a administração em seu ambiente Hyper-V. Apenas lembre-se de que, seja qual for a ferramenta que você use para gerenciar suas VMs, é necessário criar backups para evitar perda de dados e tempo de inatividade.

O NAKIVO Backup & Replication é uma solução de proteção de dados confiável e poderosa, que pode ajudá-lo a proteger ambientes VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows e Microsoft 365.

Source:
https://www.nakivo.com/blog/essential-hyper-v-powershell-commands/