Назад | Перейти на главную страницу

Как мне выключить хост через ssh на ESXi 5, чтобы он правильно завершил работу гостей?

У меня есть ssh-вход на хост ESXi 5.

У всех гостей работают инструменты vmware, поэтому они могут быть выключены хостом должным образом.

Мне нужен эквивалент для этой опции меню в клиенте vSphere:

Он автоматически выключает всех гостей (если у них запущены инструменты vmware), а затем и сам хост.

Есть такая "умная" команда shutdown all в командной строке ESXi 5?

Думаю, я нашел ответ. Этот сценарий мог это сделать:

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

Обратите внимание на часть в строке 17ff, где она ожидает полного завершения работы виртуальных машин.

Спасибо Сергею!

    Connect-VIServer MyVIServer
2    
3   # Get All the ESX Hosts
4   $ESXSRV = Get-VMHost
5    
6   # For each of the VMs on the ESX hosts
7   Foreach ($VM in ($ESXSRV | Get-VM)){
8       # Shutdown the guest cleanly
9       $VM | Shutdown-VMGuest -Confirm:$false
10  }
11   
12  # Set the amount of time to wait before assuming the remaining powered on guests are stuck
13  $waittime = 200 #Seconds
14   
15  $Time = (Get-Date).TimeofDay
16  do {
17      # Wait for the VMs to be Shutdown cleanly
18      sleep 1.0
19      $timeleft = $waittime - ($Newtime.seconds)
20      $numvms = ($ESXSRV | Get-VM | Where { $_.PowerState -eq "poweredOn" }).Count
21      Write "Waiting for shutdown of $numvms VMs or until $timeleft seconds"
22      $Newtime = (Get-Date).TimeofDay - $Time
23      } until ((@($ESXSRV | Get-VM | Where { $_.PowerState -eq "poweredOn" }).Count) -eq 0 -or ($Newtime).Seconds -ge $waittime)
24   
25  # Shutdown the ESX Hosts
26  $ESXSRV | Foreach {Get-View $_.ID} | Foreach {$_.ShutdownHost_Task($TRUE)}
27   
28  Write-Host "Shutdown Complete"