如何通过WMI在Hyper-V中暂停VM

时间:2019-10-07 21:55:54

标签: python powershell wmi hyper-v

我的Windows 10 Pro桌面上有一些Hyper-VM VM。我希望能够通过WMI保存,暂停和重新启动它们。我在下面的示例中使用了Powershell,但这仅用于原型制作:我的最终目标语言是Python。我下面描述的问题在Powershell和Python的WMI支持中都会发生。

通过Powershell的WMI支持,我可以调用Msvm_ComputerSystem.RequestStateChange。

https://docs.microsoft.com/en-us/windows/win32/hyperv_v2/requeststatechange-msvm-computersystem似乎将“暂停”状态列出为32776。

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/virtual/requeststatechange-msvm-computersystem似乎将“暂停”状态列出为32768。

将状态设置为诸如Enabled(2)之类的简单方法即可:

PS C:\Windows\system32> $vms = get-wmiobject -namespace root\virtualization\v2 Msvm_ComputerSystem
PS C:\Windows\system32> $vms[1].RequestStateChange(3)


__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
Job              : \\DESKTOP-6D2EIET\root\virtualization\v2:Msvm_ConcreteJob.InstanceID="28751864-53E3-498F-B9F0-F7C06D
                   B1FA21"
ReturnValue      : 4096
PSComputerName   :

(4096表示过渡已开始)

但是将状态设置为记录的暂停状态之一32768或32776会返回32775的ReturnValue,例如无效状态。

PS C:\Windows\system32> $vms[1].RequestStateChange(32776)


__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
Job              :
ReturnValue      : 32775
PSComputerName   :

因此:使用WMI暂停Hyper-V VM的正确方法是什么?

0 个答案:

没有答案