Vmware-Esxi

如何在 ESXi 5 上通過 ssh 關閉主機,以便正確關閉來賓?

  • January 8, 2013

我通過 ssh 登錄到 ESXi 5 主機。

所有來賓都在執行 vmware 工具,因此它們可以被主機正確關閉。

我想要 vSphere 客戶端中此菜單選項的等效項:

在此處輸入圖像描述

它會自動關閉所有來賓(如果它們正在執行 vmware 工具),然後是主機本身。

ESXi 5 命令行上是否有這樣的“智能”關閉所有命令?

我想我找到了答案。這個腳本可以做到:

http://www.virtu-al.net/2010/01/06/powercli-shutdown-your-virtual-infrastructure/

請注意第 17ff 行中等待 VM 乾淨關閉的部分

謝謝謝爾蓋!

Connect-VIServer MyVIServer
2 
3 # 獲取所有 ESX 主機
4 $ESXSRV = 獲取 VMHost
5 
6 # 對於 ESX 主機上的每個虛擬機
7 Foreach ($VM in ($ESXSRV | Get-VM)){
8 # 乾淨關閉guest
9 $虛擬機 | 關機-VMGuest -Confirm:$false
10 }
11 
12 # 設置在假設剩餘的開機客人卡住之前等待的時間
13 $waittime = 200 #Seconds
14 
15 $Time = (Get-Date).TimeofDay
16 做{
17 # 等待虛擬機徹底關閉
18 睡眠 1.0
19 $timeleft = $waittime - ($Newtime.seconds)
20 $numvms = ($ESXSRV | Get-VM | Where { $_.PowerState -eq "poweredOn" }).Count
21 寫“等待關閉 $numvms VM 或直到 $timeleft 秒”
22 $Newtime = (Get-Date).TimeofDay - $Time
23 } 直到 ((@($ESXSRV | Get-VM | Where { $_.PowerState -eq "poweredOn" }).Count) -eq 0 -or ($Newtime).Seconds -ge $waittime)
24 
25 # 關閉 ESX 主機
26 $ESXSRV | Foreach {獲取查看 $_.ID} | Foreach {$_.ShutdownHost_Task($TRUE)}
27 
28 寫主機“關機完成”

引用自:https://serverfault.com/questions/349846