从PowerShell获取“停止”Hyper-V VM状态

我使用http://pshyperv.codeplex.com/通过PowerShellpipe理Hyper-V。 操作系统:Windows Server 2012

这个PS模块可以得到正在运行的虚拟机,我想应该得到那些处于停止状态的虚拟机。 命令:

Get-VM运行

Get-VM已停止

如果获得运行的机器没有问题,并返回正确的列表,那么我有一个问题,或者可能缺乏知识,如何获取已停止的机器,因为当我closures机器时,仍然没有被Get-VM -Stopped返回。 机器状态是“关”。 只要我开始,它就在运行列表中,就像什么都没有发生。 VM不会被完全删除,只是closures。

有任何想法吗?

我会尝试原生w2k12 hyper-v powershell命令,它们比codeplex更完整。 codeplex我认为是面向w2k8r2。

我将以前面介绍的这个事实,我刚开始有史以来第一次看到PowerShell和CodePlex Hyper-V模块。

这就是说,我相信CodePlex Hyper-V模块在Get-VM中使用的WQL查询中存在一个“缺陷”,它阻止它返回处于Stopped状态的VM(尽pipeGet-VM文档声明)。

问题似乎是where子句的ProcessID部分。 该注释表示已停止的VM的ProcessID应为0,但看起来并非如此。 停止的VM似乎具有NULL的ID。 删除该子句应该可以解决这个问题,但我不知道还有什么(除了Hyper-V主机本身)可能会停止被过滤掉。

我假设这是一个2K8 – > 2K12不兼容性,而不是假设这总是被打破,但我不能确认,因为我没有2K8 Hyper-V安装来testing它。