Executando Script PowerCLI no agendador de tarefas do Windows

Executando Script PowerCLI no agendador de tarefas do Windows

A possibilidade de podermos agendar a execução de script PowerCLI utilizando o agendador de tarefas do Windows é muito legal. Eu comecei a pesquisar sobre este assunto baseado na necessidade de desligar automaticamente todas as máquinas virtuais e todos os hosts ESXi de um Cluster em um dia e horário específicos.

Primeiramente é necessário ter instalado o VMware PowerCLi ou PowerCLI Core, depois vamos verificar se o seu PowerShell conhece os comandos do PowerCLI, para isso vamos executar o script de inicialização Initialize-PowerCLIEnvironment.ps1 localizado em C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts.

Lembrando que antes de cada script executado pelo PowerShell é necessário incluir o script de inicialização Initialize-PowerCLIEnvironment.ps1.

Para testar vamos executar um script bem simples.

cd "C:\Program Files (x86)\VMware\Infrastructure\PowerCLI\Scripts"
.\Initialize-PowerCLIEnvironment.ps1

$vCenter = "192.168.2.9"
$vCuser = "Administrator@vsphere.local"
$vCpass = "VMware1!"

Connect-VIServer $vCenter -u $vCuser -password $vCpass | Out-Null

Get-VMHost | Select Name,ConnectionState,Version >> c:\temp\vmhost.txt

Após criar o script, abra o PowerShell e execute-o. Se você conseguir visualizar as informações abaixo e o arquivo vmhost.txt em C:\temp foi criado, é por que está funcionando.

Feito isso, basta abrir o agendador de tarefas do Windows e criar uma nova tarefa. Na aba Ações é onde apontamos para o script que será executado

Programa/script: C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe

Adicione argumentos (opcional): “& ‘C:\Scripts\ScriptTest.ps1′”

Observação: por causa da fonte utilizada alguns caracteres podem ser convertidos, por isso deixei uma imagem abaixo com a linha correta.

É isso, bons scripts e até a próxima!

7 thoughts on “Executando Script PowerCLI no agendador de tarefas do Windows

  1. Olá tudo bem!
    Estou com a mesma demanda aqui na empresa (desligar e ligar, vm’s e esxi automaticamente).

    Você por acaso postou esta script aqui no blog (procurei e não achei)?
    Se não, poderia me dar um help sobre como construir esta script? Sou leiga em programação, mas como cuido da infra preciso fornecer esta solução.

    Desde já obrigada

    1. Olá Diamar, assim como qualquer outra linguagem de programação, é fundamental entender a lógica. Recomendo que você procure a documentação do PowerCLI, principalmente nos comandos “Stop-VMHost” e “Stop-VMGuest”. Segue abaixo um exemplo de script para desligar o ambiente. Abraço e bons estudos!

      # Conecta no vCenter Server
      Connect-VIServer 192.168.2.9 –User Administrator@vsphere.local –Password ‘M1nhaS3nhaS3gur@’

      # Desliga VMs do Cluster CL-SRV-iSCSI
      $VMs1 = Get-Cluster “CL-SRV-iSCSI” | Get-VM
      foreach ( $vm in $VMs1 ) { Stop-VMGuest -VM $vm -Server 192.168.2.9 -Confirm:$false }

      Start-Sleep -Seconds 60

      # Desliga Hosts do Cluster CL-SRV-iSCSI
      $Hosts1 = Get-Cluster “CL-SRV-iSCSI” | Get-VMHost
      foreach ( $vm2 in $Hosts1 ) { Stop-VMHost -VMHost $vm2 -Server 192.168.2.9 -Force -Confirm:$false }

  2. olá, enquanto executar a tarefa fica a tela sua frente? este powershell é possivel inimizar dele?

    1. A ideia de usar o agendador de tarefas é justamente rodar sem precisar do usuário logado. Valeu!

  3. Olá amigo, muito obrigado por compartilhar conosco o seu conhecimento.
    No comando “# Desliga Hosts do Cluster CL-SRV-iSCSI” desliga a máquina também?
    Quero desligar o servidor por completo. O comando funcionará pra isso?
    E há alguma forma de fazer o vSphere “acordar” em um determinado horário?
    Desde já agradeço a sua inestimável ajuda.

    1. Olá, é possível utilizar comandos para desligar os hosts ESXi e as VMs. Nunca fiz nada para ligar os hosts ESXi, mas existe uma função na grande maioria das BIOS (servidor físico) que liga depois de um tempo e/ou liga quando a energia for reestabelecida. Bons scripts!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *