понедельник, 10 декабря 2012 г.

Hyper-V. 2008R2. Запуск виртуалок с подтверждением.


  • исходные данные: Power Shell  и PowerShell ISE(необязательно) устанвлены
  • Устанавливаем   библиотеку модулей power Shell для Hyper-V  через прилагающийся в комплекте установки install.bat.  Для просты копирем папку HyperV в C:\system32\MicrosoftPower Shell\v.1.0\modules (чтобы модуль Hyper-V загружался вместе с запуском powershell :powershell.exe -noexit -ImportSystemModules)
  • Вариант1: запускает виртуалку и не дожидается ее запуска.  Создаем файл start-vms.ps1 c таким содержимым:

Import-Module "C:\Program Files\modules\hyperV"
Start-Sleep -s 10
start-vm "your_vm_name"

  • Вариант2 : Основан на той-же библиотеке. Позволяет дожидаться запуска виртуалки - актуально для виртуализированных контроллеров домена и зависимых друг от друга машин. Создаем файл start-vms-wait.ps1: 
Import-Module "C:\Program Files\modules\hyperV"
function PowerOnVM
{
    param($vm, $Wait)
    if ($Wait -eq 1) {
        start-vm $vm
        $i = ping-vm $vm
        $x = $i.Status
        $count = 0
        do {
            Write-Host $x
            Write-Host $vm " is not running"
            Write-Host "Count: " $count
            $i = ping-vm $vm
            $x = $i.Status
            Start-Sleep -10
            $count++
            $DNS = $count.ToString()
            $DNS = $DNS.substring($DNS.length-1,1)
            if ($DNS -eq "0") {
            Write-Host "Flushing DNS"
            ipconfig /flushdns}
            }
        while ($x -ne "Success")
        Write-Host $vm " is running"
        Start-Sleep -30
    }
    else {
        start-vm $vm
        Start-Sleep -10
    }
}

#Only make changes below this line
#Add a new line for each VM
#Paramters: -vm = the name of the VM to turn on
#           -Wait = 1 to wait until VM is fully turned on
#                   0 to not wait
PowerOnVM -vm DC1 -Wait 1
PowerOnVM -vm SQL1 -Wait 1
PowerOnVM -vm Stor1 -Wait 0
PowerOnVM -vm Exchange1 -Wait 0

Первоисточник кода здесь

  • Создаем bat файл start-vms.bat :    powershell.exe -noexit  "& {<path_to_script>\start-vms.ps1}" и вешаем его на планировщик задач. Не забываем поставить галочку - "запускать с наивысшими правами"
  • Любуемся результатами 
Проверено на Win2008R2std + HyperV. тонкость при тестировании - PS и cmd запускать от имени администратора

Комментариев нет:

Отправить комментарий