Na FIRMA - Script Powershel para Stop de VMs :: Blog Homelaber Brasil — Blog Homelabler Brasil | Home lab· Infraestrutura de TI· Virtualização· Cloud Computing · DevOps | Blog sobre Virtualização, Infraestrutura de TI, Cloud Computing e DevOps escrito em Português. Criado e editado por Valdecir Carvalho
Guest Stop-VM microsoft powershell PowerCli powershell script script para parar vms script to shutdown virtual machines shutdown Shutdown-VM vcenter vm shutdown vmware vmware powercli Blog
Hoje vou falar sobre um script em Powershell que eu usei na FIRMA para fazer o shutdown de todas as VMs do meu ambiente. Tivemos que mudar fisicamente de lugar todos os servidores do ambiente e para isso, realizamos alguns "ensaios" para garantir que tudo sairia com o planejado no dia D. No primeiro ensaio, acabei por derrubar VM por VM via console do vSphere, mas isso não é uma coisa legal de se fazer quanto você tem mais de 100 VMs em Produção no seu ambiente.
Pesquisei um pouco nas internets da vida e encontrei um script bem parecido com o que eu queria. Fiz algumas modificações e reformas para se adequar ao meu ambiente e o resultado é o código que você encontra aqui embaixo.
Esse código basicamente, lê um arquivo TXT chamado VMLIST.TXT com uma lista de todas as VMs que eu queria derrubar. O script faz um loop pelo arquivo e vai logando em um arquivo texto o resultado de cada shutdown, junto com o tempo gasto na operação. Esse log, foi bastante útil para conseguir medir o tempo exato e planejar a janela de mudança, uma vez que bastava disparar o código, abrir um Redbull (essas coisas são sempre feitas na madrugada) e esperar.
Outra curiosidade do código, é que ele tenta derrumar a VM de uma forma "graciosa", com o comando "Shutdown-VMGuest" ou seja, dando o comando para o VMware Tools desligar o SO e depois fazer o halt da máquina. Caso não consiga, ele vai no modo bruto mesmo, com o comando "Stop-VM" tipo um DEDOFF. E importante, se você derrubar um monte de VMs de uma vez, você pode ter problemas, por isso, o código espera 30 segundos entre cada VM.
O código está bastante fácil de ser modificado, caso seja necessário cobrir alguma particularidade do seu ambiente, mas pode ser utilizado AS-IS que vai funcionar.
[su_box title="ATENÇÃO" style="glass" box_color="#FF0000"]NUNCA execute um script que você encontraR na internet (nem aqui desse site super confiável) diretamente em seu ambiente de produção. Antes, faça um teste em homologação ou em laboratório. E mais uma coisa, eu não me responsabilizo por qualquer dano que por ventura esse código venha causar no seu ambiente OK?[/su_box]
Outro uso uso interessante para esse código é derrubar o seu LAB quando for necessário. Fácil, rápido e prático!
É isso ai galera! Vou ficando por aqui! Se você gostou desse post com script ou se esse script foi útil para você, deixe um comentário aqui no post.
Ah(1), quase ia me esquecendo de comentar, que para executar esse script, você precisa ter o VMware PowerCLI instalado em seu computador (link para a versão 6.3)
Ahh(2), mais uma coisa que lembrei depois. A maneira mais fácil e rápida de de gerar o TXT com as suas VMs, é utilizando o RVTools conforme eu já comentei aqui e o Excel.
Script: vm-shutdown.ps1 (código disponibilizado no gist do Homelaber)
#SCRIPT PARA SHUTDOWN DE VIRTUAL MACHINES NO VCENTER
#CRIAR UM ARQUIVO TXT NO FORMATO ABAIXO COM O NOME DE VMLIST.TXT
#FALTA MELHORAR A PARTE DE LOG E CATCH DE ERRO....
#função que cria um arquivo de log
$vcenter="COLOCAR O NOME DO SEU VCENTER SERVER AQUI"
$vmlistfile = $scriptDir + "\vmlist.txt"
$waittime = 30
LogMessage "Iniciando Shudown das VMs:"
Import-Csv $vmlistfile |
Write-Host $strNewVMName
LogMessage "==========================================================================================="
LogMessage "Conectando no servidor Vcenter: $vcenter ..."
$success = Connect-VIServer $vcenter -Credential $mycredentials -WarningAction:SilentlyContinue
if ($success) { Write-Host "Conectado com sucesso ao servidor vCenter: $vcenter" -Foregroundcolor Green }
Write-Host "Não foi possível conectar ao servidor cCenter: $vcenter" -Foregroundcolor Red
LogMessage "Não foi possível conectar ao servidor cCenter: $vcenter"
LogMessage "Carregando arquivo de vms..."
LogMessage "Processando VM: ++ $strNewVMName ++ ..."
#Commando de Shutdown...
LogMessage "Executando shutdown da VM ++ $strNewVMName ++ via VNMware Tools.Aguardando... (30s)"
LogMessage "Executando shutdown da VM: ++ $strNewVMName ++ via Force Stop.Aguardando... (30s)"
LogMessage "Desconectando servidor Vcenter..."
LogMessage "Servidor Vcenter Desconectado!"
← Preparando uma VM Red Hat Enterprise Linux para Desenvolvimento Pluralsigth - Uma das muitas vantagens de ser um vEXPERT →