如何通过WMI暂停HyperV中的VM

2024-10-04 05:24:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Windows10Pro桌面上有几个超级虚拟机。我想能够保存,暂停和重新启动他们通过WMI。我下面的例子是Powershell,但这只是原型:我的最终目标语言是Python。下面我描述的问题发生在Powershell和Python的WMI支持上。你知道吗

通过Powershell的WMI支持,我可以调用Msvm_计算机系统.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,即无效状态,例如

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虚拟机的正确方法是什么?你知道吗


Tags: httpsdocswindows状态wmimicrosoftv2ps