none
Скрипт автоматического включения и выключения сервера на Hyper-V RRS feed

  • Вопрос

  • Есть у меня сервер Hyper-V на Windows Server 2012. На нем оч много виртуалок. И Есть задача сделать скрипт, который при выполнении допустим stop-server.ps1 name-vm выключал виртуалку name-vm. В самом скрипте надо чтобы было 4 выключения 4х разных VM. В голову так и ничего и не пришло. Кто сможет помочь? Не хочется писать 4 скрипта.
    21 июня 2013 г. 13:28

Ответы

    • Помечено в качестве ответа KazunEditor 30 июня 2013 г. 11:05
    30 июня 2013 г. 7:40
  • 1) В скрипте нельзя использовать Enter-PSSession

    2) Скрипт должен вызываться без кавычек (либо добавить перед названием знак &)

    3) Зачем делать невразумительные названия переменных

    Скрипт:

    param($vmname)
    Invoke-Command -ComputerName Hyper-V1 -ScriptBlock {Stop-VM -Name $using:vmname}

    Вызов скрипта:

    C:\script\stop.ps1 Centos32

    .\stop.ps1 Centos32


    21 июня 2013 г. 15:17
    Отвечающий

Все ответы

  • А зачем скрипт когда достаточно командлета Stop-VM?

    Stop-VM [-Name] <String[]>

    Stop-VM v1,v2,v3,v4

    21 июня 2013 г. 13:32
    Отвечающий
  • Ну вот сказали надо такой скрипт.  выполняешь его с аргументом определенным и выключается определенная виртуалка,  т.е. сразу 4 не надо. А человеку лень писать командлет и т.д.
    21 июня 2013 г. 13:36
  • Ну вот сказали надо такой скрипт.  выполняешь его с аргументом определенным и выключается определенная виртуалка,  т.е. сразу 4 не надо. А человеку лень писать командлет и т.д.
    А в чем сложность скопировать Stop-VM в файл с расширением ps1?
    param ($name)
    Stop-VM -Name $name

    • Предложено в качестве ответа Angel-Keeper 24 июня 2013 г. 23:04
    21 июня 2013 г. 13:38
    Отвечающий
  • т.е. сделать что-то типа такого?

    param($Vm1)

    Stop-VM -Name $VM1

    и при запуске stop.ps1 VM1 будет выполняться этот скрипт для параметра VM1?

    21 июня 2013 г. 13:48
  • т.е. сделать что-то типа такого?

    param($Vm1)

    Stop-VM -Name $VM1

    и при запуске stop.ps1 VM1 будет выполняться этот скрипт для параметра VM1?

    stop.p1 VM1 - выключит VM1

    stop.ps1 VM1,VM2 - выключит VM1 и VM2

    21 июня 2013 г. 13:51
    Отвечающий
  • сделал скрипт:

    Enter-PSSession Hyper-V1
    param($Centos32)
    Stop-VM -Name $Centos32
    

    в окне PS пишу "StopVM.ps1" Centos32

    пишет 

    At line:1 char:11
    + "123.ps1" Centos32
    +           ~~~~~~~~
    Unexpected token 'Centos32' in expression or statement.
        + CategoryInfo          : ParserError: (:) [], ParseException
        + FullyQualifiedErrorId : UnexpectedToken

    21 июня 2013 г. 14:21
  • 1) В скрипте нельзя использовать Enter-PSSession

    2) Скрипт должен вызываться без кавычек (либо добавить перед названием знак &)

    3) Зачем делать невразумительные названия переменных

    Скрипт:

    param($vmname)
    Invoke-Command -ComputerName Hyper-V1 -ScriptBlock {Stop-VM -Name $using:vmname}

    Вызов скрипта:

    C:\script\stop.ps1 Centos32

    .\stop.ps1 Centos32


    21 июня 2013 г. 15:17
    Отвечающий
  • Спасибо, заработало:) Могли бы вы подсказать, где можно и какой материал почитать по PS. Чтобы хотя бы азы познать, какие команды за что отвечают.
    24 июня 2013 г. 9:28
    • Помечено в качестве ответа KazunEditor 30 июня 2013 г. 11:05
    30 июня 2013 г. 7:40