none
Get-VM на Windows Server 2012R2

    Вопрос

  • Добрый день.

    Хочется сделать скрипт, получающий список виртуальных машин по хостам.

    Для этого использую оператор Get-VM -ComputerName %server%. С хостами Windows Server 2016 все отлично. Но есть хосты 2012R2, получаю ошибку:

    Get-VM : The Hyper-V module used in this Windows PowerShell session cannot be used for remote management of the server 'SERVERNAME'. Load a compatible version of the Hype
    r-V module, or use Powershell remoting to connect directly to the remote server. For more information, see https://go.microsoft.com/fwlink/p/?LinkID=532650.
    At D:\_sys\PS\Список виртуальных машин на хостах\vmachines.ps1:17 char:18
    +     $VMachines = Get-VM -ComputerName $VHost
    +                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [Get-VM], VirtualizationException
        + FullyQualifiedErrorId : InvalidOperation,Microsoft.HyperV.PowerShell.Commands.GetVM

    При выполнении Get-VM локально на хосте вывод пустой.

    Подскажите, что за хитрость?

    29 ноября 2018 г. 8:47

Ответы

  • Сохранить в скрипт и приложить скрин:

    Remove-Module Hyper-V

    Import-Module Hyper-V -RequiredVersion 1.1

    Get-Module $VHosts = "SERVERNAME" Get-VM -ComputerName $VHost



    • Помечено в качестве ответа atulyakov 29 ноября 2018 г. 14:01
    29 ноября 2018 г. 13:52
    Отвечающий

Все ответы

  • https://blogs.msdn.microsoft.com/virtual_pc_guy/2015/11/16/why-are-there-two-hyper-v-powershell-modules-in-windows-10/

    Требуется загружать модуль версии 1.1:

    Import-Module Hyper-V -RequiredVersion 1.1

    29 ноября 2018 г. 8:51
    Отвечающий
  • https://blogs.msdn.microsoft.com/virtual_pc_guy/2015/11/16/why-are-there-two-hyper-v-powershell-modules-in-windows-10/

    Требуется загружать модуль версии 1.1:

    Import-Module Hyper-V -RequiredVersion 1.1

    Спасибо, локально заработало.

    А вот удаленно - нет, ошибка осталась...

    Придется через PSSession подключаться и удаленно выполнять?

    29 ноября 2018 г. 9:20
  • https://blogs.msdn.microsoft.com/virtual_pc_guy/2015/11/16/why-are-there-two-hyper-v-powershell-modules-in-windows-10/

    Требуется загружать модуль версии 1.1:

    Import-Module Hyper-V -RequiredVersion 1.1

    Спасибо, локально заработало.

    А вот удаленно - нет, ошибка осталась...

    Придется через PSSession подключаться и удаленно выполнять?

    Должно работать и удалено с 2012.

    1. Запустить консоль PowerShell

    2. Проверить, что модуль незагружен:

    Get-Module

    3. Выполнить: 

    Import-Module Hyper-V -RequiredVersion 1.1

    4. Проверить , загрузку модуля

    Get-Module

    5.  Выполнить

    Get-VM -ComputerName $VHost

    6. Показать скрин


    • Изменено KazunEditor 29 ноября 2018 г. 9:34
    29 ноября 2018 г. 9:24
    Отвечающий
  • Import-Module Hyper-V -RequiredVersion 1.1
    $VHosts = "SERVERNAME"
    $DokuWikiPage = "c:\file.txt"
    $DateForPage = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    
    ForEach ($VHost in $Vhosts)
        {
        $VMachines = Get-VM -ComputerName $VHost
        ForEach ($VMachine in $VMachines)
            {
            "|"+$VHost+"|"+$VMachine.Name+"|"+$VMachine.State+"|"+$VMachine.Version+"|"| Out-File $DokuWikiPage -Append -Encoding utf8
            }
        }

    Вот такой скрипт, по задумке он формирует текстовый файл (я вырезал часть, которая создает сам файл и шаблон). В результате его работы вылазит:

    Get-VM : The Hyper-V module used in this Windows PowerShell session cannot be used for remote management of the server 'SERVERNAME'. Load a compatible version of the Hyper-V module, or use Po
    wershell remoting to connect directly to the remote server. For more information, see https://go.microsoft.com/fwlink/p/?LinkID=532650.
    At D:\_sys\PS\Список виртуальных машин на хостах\vmachines.ps1:19 char:18
    +     $VMachines = Get-VM -ComputerName $VHost
    +                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [Get-VM], VirtualizationException
        + FullyQualifiedErrorId : InvalidOperation,Microsoft.HyperV.PowerShell.Commands.GetVM


    Ежели просто в PS сделать как Вы написали, то все корректно...


    Добавлю! В скрипт дописал строку Get-Module, пишет, что версия Hyper-V модуля 2.0.0, хотя строкой ранее стоит Import-Module Hyper-V -RequiredVersion 1.1

    • Изменено atulyakov 29 ноября 2018 г. 13:49
    29 ноября 2018 г. 13:47
  • Сохранить в скрипт и приложить скрин:

    Remove-Module Hyper-V

    Import-Module Hyper-V -RequiredVersion 1.1

    Get-Module $VHosts = "SERVERNAME" Get-VM -ComputerName $VHost



    • Помечено в качестве ответа atulyakov 29 ноября 2018 г. 14:01
    29 ноября 2018 г. 13:52
    Отвечающий
  • Сохранить в скрипт и приложить скрин:

    Remove-Module Hyper-V

    Import-Module Hyper-V -RequiredVersion 1.1

    Get-Module $VHosts = "SERVERNAME" Get-VM -ComputerName $VHost



    Огонь!

    А как же так получается, что при явном импорте модуля определенной версии,происходит игнорирование.. или новый модуль не подключается по причине подключенного другой версии?

    29 ноября 2018 г. 14:01