我有sshlogin到ESXi 5主机。
所有的guest虚拟机都运行vmware工具,所以可以正确的closures主机。
我想在vSphere客户端中使用此菜单选项的等效项目:

它会自动closures所有guest虚拟机(如果他们有vmware工具运行),然后主机本身。
ESXi 5命令行中是否有这样的“智能”shutdown all命令?
我想我find了答案。 这个脚本可以做到这一点:
http://www.virtu-al.net/2010/01/06/powercli-shutdown-your-virtual-infrastructure/
请注意17ff行中等待虚拟机closures的部分
谢谢谢尔盖!
Connect-VIServer MyVIServer
2
3#获取所有ESX主机
4 $ ESXSRV = Get-VMHost
五
6#对于ESX主机上的每个VM
7 Foreach($ VM in($ ESXSRV | Get-VM)){
8#closures客人干净
9 $ VM | Shutdown-VMGuest -Confirm:$ false
10}
11
12#设置在假定剩余的电源客人卡住之前等待的时间
13 $等待时间= 200#秒
14
15 $ Time =(Get-Date).TimeofDay
16做{
17#等待虚拟机关机干净
18睡眠1.0
19 $ timeleft = $ waittime - ($ Newtime.seconds)
20 $ numvms =($ ESXSRV | Get-VM |其中{$ _。PowerState -eq“PoweredOn”})。Count
21写下“等待closures$ numvms虚拟机或直到$ timeleft秒”
22 $ Newtime =(Get-Date).TimeofDay - $ Time
23}直到((@($ ESXSRV | Get-VM | Where {$ _。PowerState -eq“PoweredOn”})。Count)-eq 0 - 或($ Newtime).Seconds -ge $ waittime)
24
25#closuresESX主机
26 $ ESXSRV | Foreach {Get-View $ _。ID} | Foreach {$ _。ShutdownHost_Task($ TRUE)}
27
28写主机“关机完成”