я использую http://pshyperv.codeplex.com/ для управления Hyper-V через PowerShell. ОС: Windows Server 2012
Этот модуль PS может получать виртуальные машины, которые работают, и, я думаю, должен получать те, которые находятся в остановленном состоянии. Команды:
Get-VM -Running
Get-VM -Stopped
Если запуск работающих машин не является проблемой и возвращается правильный список, у меня есть проблема или, возможно, незнание, как остановить машины, потому что, когда я выключаю машину, Get-VM -Stopped все равно не возвращает ее. Состояние машины «Выкл.». Как только я его запускаю, он появляется в списке «Выполняется», как будто ничего не произошло. ВМ НЕ удаляется полностью, просто выключите.
Любые идеи?
Я бы попробовал собственные команды w2k12 hyper-v powershell, они намного более полны, чем команды codeplex. Те, что на codeplex, я думаю, ориентированы на w2k8r2.
Я предваряю это тем фактом, что сегодня я впервые начал изучать PowerShell и модуль CodePlex Hyper-V.
При этом я считаю, что модуль CodePlex Hyper-V просто имеет «ошибку» в запросе WQL, используемом в Get-VM, который не позволяет ему возвращать виртуальные машины, которые находятся в состоянии Stopped (несмотря на то, что утверждается в документации Get-VM).
Проблема, по-видимому, связана с частью ProcessID предложения where. Комментарий указывает, что ProcessID для остановленной виртуальной машины должен быть равен 0, но, похоже, это не так. Остановленные виртуальные машины имеют идентификатор NULL. Удаление этого пункта должно решить проблему, хотя я не знаю, что еще (кроме самого хоста Hyper-V) может перестать отфильтровываться в этот момент.
Я предполагаю, что это несовместимость 2K8 -> 2K12, а не предполагаю, что это всегда было нарушено, но я не могу подтвердить это, поскольку у меня нет установки 2K8 Hyper-V, чтобы проверить ее.