我正在尝试使用 C# 的 System.Management API 以编程方式启动 Hyper-V VM。我在创建和配置 VM 方面取得了巨大成功,但事实证明,启动 VM 是难以捉摸的。
我得到一个 Msvm_ComputerSystem 对象,使用辅助方法执行 WQL 查询:
ManagementObject compSys = WMIHelpers.GetMsvm_ComputerSystem(scope, vmName);
更改 VM 状态的方法是(据称)“RequestStateChange”,我能够获取参数对象并设置它们:
ManagementBaseObject callParams = compSys.GetMethodParameters("RequestStateChange");
callParams["RequestedState"] = WMIHelpers.RequestedState.Enabled;
但是,当我调用该方法时,我的返回值为 1,这是未记录的:
ManagementBaseObject result = vsServ.InvokeMethod("RequestStateChange", callParams, null);
if(result["ReturnValue"] == 1)
{
System.Console.WriteLine("WTF?!?");
}
我不知道我在这里做错了什么,或者为什么我会得到这个未记录的返回值。