Scripting Básico do PowerCLI para VMware vSphere

Básico de PowerCLI scripting

Vamos examinar alguns commandlets básicos do PowerCLI para ver como é fácil começar a extrair informações do nosso ambiente vSphere com o PowerCLI. Tenha em mente que, abaixo, não há a intenção de ser um tutorial abrangente, mas sim uma introdução ao PowerCLI e como começar a executar commandlets e aprender a automatizar seu ambiente.

O primeiro commandlet que precisamos executar é o que nos conecta de fato ao nosso ambiente vSphere. Você pode se conectar diretamente a um host ESXi ou ao vCenter Server.

Para se conectar, execute o seguinte comando em uma sessão do PowerShell habilitada para PowerCLI:

  • Connect-VIServer –server <seuservidor>

Ao executar o comando, você será solicitado suas credenciais de login. Digite seu nome de usuário e senha para seu servidor ESXi ou vCenter Server.

Um dos comandos básicos que podemos executar quando nos conectamos a qualquer ESXi ou vCenter é ver todas as VMs no ambiente. Usamos o commandlet get-vm para mostrar informações sobre as VMs convidadas.

  • Get-VM - O commandlet get-vm lista as VMs em execução no host conectado

Para obter informações mais detalhadas do commandlet get-vm, podemos exibir informações completas com o comando:

  • Get-VM | fl – Exibe informações mais detalhadas, como Sistema Operacional do Hóspede, Pools de Recursos, Nível da Versão do Hardware da VM, pasta em que está localizada e muitos outros detalhes.

Agora, vamos retornar informações específicas úteis do comando Get-VM. Vamos encontrar as VMs que estão no estado PoweredOff. Podemos obter informações do comando Get-VM e, em seguida, direcionar isso para where-object para selecionar as informações específicas que queremos consultar – neste caso, PowerState. Como você pode ver, existem inúmeras possibilidades de obter várias informações de VM e direcionar essas informações para outro comando do PowerShell.

  • Get-VM | where-object {$_.PowerState -eq "PoweredOff"}

Como você pode ver, isso exibe apenas as VMs que estão no estado de “PoweredOff”. Isso pode ser extremamente útil. Até podemos direcionar o resultado do comando acima para o comando Start-VM. Então, essencialmente, podemos obter todas as VMs desligadas e então ligar essas VMs.

  • Get-VM | where-object {$_.PowerState -eq "PoweredOff"} | Start-VM

E quanto ao desligamento de VMs específicas? Também podemos fazer isso. Podemos chamar a VM pelo nome e então usar o comando Stop-VMGuest que inicia um desligamento do sistema operacional convidado.

  • Get-VM 〈suaVM〉 | Stop-VMguest

Se você não deseja receber a confirmação da ação, podemos adicionar o parâmetro -confirm:false:

Vamos ver quantas VMs estão em execução com mais de 1 CPU atribuído. Novamente, podemos usar o comando where-object para selecionar o objeto NumCpu.

  • Get-VM | where-object {$_.NumCpu -gt 1 }

PowerCLI Loops

Os loops permitem que você execute a mesma operação várias vezes em objetos selecionados ou por um número de vezes. Por exemplo, com um loop foreach, podemos repetir uma determinada ação várias vezes. É configurado como o pseudo código abaixo:

foreach ($var in $vars){
Faça algo…
}

Se quisermos ser específicos sobre quais objetos vamos executar a ação, podemos, por exemplo, percorrer uma lista específica de VMs de um arquivo de texto. Para preencher o arquivo de texto, podemos executar nosso comando Get-VM selecionando as propriedades que desejamos e, em seguida, redirecionar para um arquivo de texto. Podemos então usar o PowerShell para ler o arquivo de texto e colocar as VMs em uma matriz na qual podemos percorrer e executar uma ação. Abaixo, estamos adicionando um novo adaptador de rede às VMs na lista.

Get-vm | where-object {$_.MemoryGB -eq 4 } | select -ExpandProperty Name | out-file c:\VMs.txt

$vms = get-content c:\VMs.txt

Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName "〈Nome do grupo de portas〉" -Type "VMXNET3" –startconnected
}

Recursos

Há muitos ótimos recursos na web, incluindo blogs pessoais, documentação oficial, exemplos de código, etc. O que eu descobri é que se você pensar em algo que queira fazer, provavelmente alguém já escreveu uma linha de código PowerCLI que fará o que você deseja. A coisa boa também é que normalmente você pode encontrar algo muito próximo do que deseja fazer e, com muito pouca modificação após aprender o básico, pode modificá-lo para atender às suas necessidades. Fazendo isso também, você está aprendendo PowerCLI e como ele funciona, bem como como modificar o código para realizar a tarefa que você precisa realizar.

A great place to start with documentation and other resources is the official VMware PowerCLI release and documentation site. Here, you can download the binaries as well as the official User’s Guide.

Há também toneladas de livros com scripts e exemplos de scripts que podem ser dissecados e modificados. Tenha em mente a comunidade de administradores VMware por aí que, na maioria das vezes, estão felizes em compartilhar o conhecimento que aprenderam com outra pessoa em seu caminho para se tornarem proficientes com PowerCLI. Entre em contato com aqueles em sua comunidade para obter ajuda com detalhes específicos ou apenas princípios gerais.

Pensamentos

O PowerCLI é muito poderoso, para dizer o mínimo. Apenas arranhamos a superfície nos exemplos acima que foram mostrados. Qualquer tarefa que você faça repetidamente, ou que seja difícil de fazer no cliente da web, é um ótimo candidato para scripting com PowerCLI. Na verdade, é geralmente assim que a maioria é introduzida ao PowerCLI – eles têm uma tarefa que precisam executar automaticamente ou uma ação baseada em outras ações no vSphere, ou novamente ações repetitivas que são bem adequadas para scripting.

A melhor maneira de aprender PowerCLI é baixá-lo, instalá-lo e começar a usá-lo em um ambiente de laboratório, como um laboratório doméstico. O verdadeiro poder de um ambiente VMware vSphere só é desbloqueado quando você vê o potencial de usar automação para assumir o controle do vSphere. Então, comece a criar scripts com o PowerCLI e você nunca mais olhará para trás!

Source:
https://www.nakivo.com/blog/basic-powercli-scripting-vmware-vsphere/