Anteriormente, examinamos o PowerCLI – o que é, como instalá-lo e como integrá-lo ao Windows Powershell ISE. Agora, vamos dar uma olhada em scripts básicos, incluindo conexão, commandlets do PowerCLI, bem como loops.
Scripting básico do PowerCLI
Vamos dar uma olhada em alguns commandlets básicos do PowerCLI para ver quão fácil é começar a obter informações de nosso ambiente vSphere com o PowerCLI. Lembre-se, o que segue não pretende 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 é aquele para realmente se conectar 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 PowerShell habilitada para PowerCLI:
connect-viserver –server 〈seuservidor〉
Quando você executa o comando, será solicitado a fornecer suas credenciais de login. Digite seu nome de usuário e senha para o seu servidor ESXi ou vCenter Server.
Um dos comandos mais básicos que podemos executar ao nos conectar a um 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 mostrar as informações completas com o comando:
Get-VM | fl
– Exibe informações mais detalhadas, como o sistema operacional convidado, 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, encaminhá-las para where-object
para selecionar as informações específicas que queremos consultar – neste caso, PowerState
. Como você pode ver, há um mundo de possibilidades para obter várias informações de VM e encaminhar essas informações para outro comando 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. Podemos até encaminhar o resultado do comando acima para o comando Start-VM. Então, essencialmente, podemos ligar todas as VMs desligadas.
Get-VM | where-object {$_.PowerState -eq "PoweredOff"} | Start-VM
E quanto a desligar VMs específicas? Também podemos fazer isso. Podemos chamar a VM pelo nome e depois usar o comando Stop-VMGuest, que inicia um desligamento do sistema operacional convidado.
Get-VM 〈suaVM〉 | Stop-VMguest
Se você não quiser receber a confirmação da ação, podemos adicionar o parâmetro –confirm:false:
Vamos ver quantas VMs estão em execução e têm mais de 1 CPU atribuído. Novamente, podemos usar o comandolet 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 looped through. 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 em quais objetos vamos realizar a ação, podemos, por exemplo, percorrer uma lista específica de VMs de um arquivo de texto. Para popular o arquivo de texto, podemos executar nosso comandolet Get-VM selecionando as propriedades que desejamos, e então redirecionar isso 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 realizar 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 porta〉" -Type "VMXNET3" –startconnected
}
Recursos
Há muitos ótimos recursos na web, incluindo sites de 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ê consegue encontrar algo muito próximo do que deseja fazer e, com pouca modificação após aprender o básico, pode modificá-lo para atender às suas necessidades. Ao fazer isso, você também está aprendendo PowerCLI e como ele funciona, além de como modificar o código para realizar a tarefa que precisa cumprir.
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.
Também existem 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 dispostos a compartilhar o conhecimento que aprenderam com outra pessoa em seu caminho para se tornarem proficientes com o PowerCLI. Procura essas pessoas em sua comunidade para obter ajuda com questões específicas ou apenas princípios gerais.
Pensamentos
O PowerCLI é muito poderoso, para dizer o mínimo. Nós apenas arranhamos a superfície nos exemplos acima que foram mostrados. Quaisquer tarefas que você faça repetidamente, ou que sejam difíceis de fazer no cliente da web, são ótimos candidatos para scripts com o PowerCLI. Na verdade, é assim que a maioria das pessoas é apresentada ao PowerCLI – elas 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 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ê percebe o potencial de usar automação para controlar o vSphere. Portanto, 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/