我已经通过 ssh 登录到 ESXi 5 主机。
所有客户机都运行着 vmware 工具,因此主机可以正确地关闭它们。
我希望 vSphere Client 中有与此菜单选项等效的选项:
它会自动关闭所有客户机(如果它们正在运行 vmware 工具),然后关闭主机本身。
ESXi 5 命令行上是否有这样的“智能”关闭所有命令?
答案1
我想我找到了答案。这个脚本可以做到这一点:
http://www.virtu-al.net/2010/01/06/powercli-shutdown-your-virtual-infrastructure/
请注意第 17ff 行中的部分,它等待虚拟机完全关闭
谢谢你,谢尔盖!
连接VIServer MyVIServer 2 3# 获取所有 ESX 主机 4 $ESXSRV = 获取 VMHost 5 6 # 对于 ESX 主机上的每个虚拟机 7 Foreach ($VM 输入 ($ESXSRV | Get-VM)){ 8 # 彻底关闭客户端 9 $VM | Shutdown-VMGuest -Confirm:$false 10 } 11 12 # 设置在假设剩余已启动的客户端被卡住之前等待的时间 13 $waittime = 200 #秒 14 15 $Time = (获取日期).TimeofDay 16 做 { 17 # 等待虚拟机完全关闭 18 睡眠 1.0 19 $timeleft = $waittime-($Newtime.seconds) 20 $numvms = ($ESXSRV | Get-VM | 其中 { $_.PowerState -eq "poweredOn" }).Count 21 写入“等待关闭 $numvms 个虚拟机或直到 $timeleft 秒” 22 $Newtime = (获取日期).TimeofDay - $Time 23 } 直到 ((@($ESXSRV | Get-VM | 其中 { $_.PowerState -eq "poweredOn" }).Count) -eq 0 -或 ($Newtime).Seconds -ge $waittime) 24 25 # 关闭 ESX 主机 26 $ESXSRV | Foreach {获取查看 $_.ID} | Foreach {$_.ShutdownHost_Task($TRUE)} 二十七 28 写入主机“关机完成”