参考文章:
http://www.leeon.me/a/vmware-esxi-auto-shutdown
https://blog.csdn.net/qq_45229597/article/details/121120798

ESXI不存在定时关机的功能,因此只能通过脚本实现。
在esxi的shell命令行中不支持cron命令,只能修改计划任务文件

vi /var/spool/crontabs/root

但ESXi重启,这个文件会被重置。此时需要修改

vi /etc/rc.local.d/local.sh

在exit 0这一行之前添加如下的脚本,使其每次开机都自动添加定时任务:

/bin/kill $(cat /var/run/crond.pid)
/bin/echo '45 0 * * * /vmfs/volumes/datastore1/shutdown.sh' >> /var/spool/cron/crontabs/root
/usr/lib/vmware/busybox/bin/busybox crond

这里写入的三行内容是为了在esxi启动后将cron设定的信息写入到crontab的配置文件中并重启cron进程。

下面建立脚本文件。

vi /vmfs/volumes/datastore1/shutdown.sh

填入:

#!/bin/sh

#shutdown all VMs(2,3,9 is VMID,add your VMIDs here)
vim-cmd vmsvc/power.off 4
vim-cmd vmsvc/power.off 6

#Poweroff Host
/sbin/poweroff    

首先关闭所有虚拟机,然后关闭主机。
获取虚拟机ID的方法:

vim-cmd vmsvc/getallvms