Лучший отвечающий
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