Desligar ou reinicializar um host ESXi cairia na definição de 'manutenção' pelo meu cálculo. Eu diria que qualquer desligamento ou reinicialização do host deve estar no modo de manutenção - parece que lembro que você recebe um prompt do console do vCenter se tentar desligar ou reinicializar um host que não esteja no modo de manutenção. Um script que desliga um host deve colocá-lo no modo de manutenção primeiro.
Dado que colocar um host no modo de manutenção não pode acontecer até que todas as VMs no host estejam desligadas ou suspensas, parece que um UPS desligando um host em particular é um tipo diferente de evento para desligar todo o host grupo. Se um único host estiver desativado, você provavelmente desejará que as VMs sejam migradas para hosts diferentes. No entanto, se todo o cluster estiver inoperante, o script precisará primeiro desabilitar o HA no cluster, suspender / interromper as VMs e, em seguida, colocar os hosts no modo de manutenção antes de desligá-los.
Não está claro para mim qual das duas ações possíveis você está procurando neste script. Se é o último (eu estou supondo que é, porque você está olhando para um cenário completo de falta de energia), você provavelmente precisará modificá-lo para fazer as etapas necessárias antes de desligar o host. Olhando para a documentação do SDK ( link ), você deve conseguir fazer isso dentro do script perl.