none
Скрипт для проверки доступности VM RRS feed

  • Вопрос

  • Доброго дня! К сожалению пока еще не очень силен в написании сценариев. Помогите пожалуйста в написании.

    Что нужно. 1) Проверка доступности виртуальной машины. Тут я хотел использовать командлет Test-Connection c параметром quiet. Получаем True или False. 2) Если значение False, то выполняем shutdown-vm и через 30 секунд start-vm.

    Спасибо

    9 октября 2012 г. 2:27

Ответы

  • if (-not (Test-Connection computernamme -Quiet))
    {
        Stop-VM VMName
        $vm = Get-VM VMName
        While ($vm.State -eq "Off")
        {
             Start-VM VMName
        } 
    }
    

    Примерно так.

    Это если тебе надо именно Shutdown, то 30 секунд может и нехватить, поэтому надо ждать, когда машина перейдет в состояние Off. Если надо отключить питание то Stop-VM vm-name -TurnOff.

    Проблемы следующие:

    1. не уверен в правильности использования логического оператора (while($vm.State -eq "Off").

    2. Test-Connection это тоже что и пинг, поэтому ему нужно передавать имя или ip-адрес компьютера. А имя компьютера и имя виртуальной машины могут отличаться.

    • Помечено в качестве ответа s.nikolaev 10 октября 2012 г. 8:34
    9 октября 2012 г. 7:37
  • Все допилил. Да ваш скрипт работает.

    Но я все же сделал чуть проще. Без запроса состояния, а просто после выключения, включить ее через 40 секунд.

    Import-Module hyperv
    if (-not (Test-Connection VMNAME -Quiet))  #проверка доступности виртуальной машины
    {
    Stop-VM -VM VMNAME -Server SERVERNAME -confirm:$false  #остановка 
    sleep -s 40 # таймаут 40 секунд

    Start-VM -VM uk-sys07 -Server uk-clu03-1

    }

    • Помечено в качестве ответа s.nikolaev 10 октября 2012 г. 8:34
    10 октября 2012 г. 8:34

Все ответы

  • if (-not (Test-Connection computernamme -Quiet))
    {
        Stop-VM VMName
        $vm = Get-VM VMName
        While ($vm.State -eq "Off")
        {
             Start-VM VMName
        } 
    }
    

    Примерно так.

    Это если тебе надо именно Shutdown, то 30 секунд может и нехватить, поэтому надо ждать, когда машина перейдет в состояние Off. Если надо отключить питание то Stop-VM vm-name -TurnOff.

    Проблемы следующие:

    1. не уверен в правильности использования логического оператора (while($vm.State -eq "Off").

    2. Test-Connection это тоже что и пинг, поэтому ему нужно передавать имя или ip-адрес компьютера. А имя компьютера и имя виртуальной машины могут отличаться.

    • Помечено в качестве ответа s.nikolaev 10 октября 2012 г. 8:34
    9 октября 2012 г. 7:37
  • Спасибо за ответ. Пока только получилось реализовать выключение виртуальной машины. Не получается проверить ее состояние и отработать запуск.
    9 октября 2012 г. 10:39
  • На каком конкретно шаге не получается проверить?

    Проверил на демостенде - приведенный мною скрипт работает. Только пришлось указать хост, на котором машина работает.

     
    9 октября 2012 г. 11:07
  • Все допилил. Да ваш скрипт работает.

    Но я все же сделал чуть проще. Без запроса состояния, а просто после выключения, включить ее через 40 секунд.

    Import-Module hyperv
    if (-not (Test-Connection VMNAME -Quiet))  #проверка доступности виртуальной машины
    {
    Stop-VM -VM VMNAME -Server SERVERNAME -confirm:$false  #остановка 
    sleep -s 40 # таймаут 40 секунд

    Start-VM -VM uk-sys07 -Server uk-clu03-1

    }

    • Помечено в качестве ответа s.nikolaev 10 октября 2012 г. 8:34
    10 октября 2012 г. 8:34