ConvertToReferencePoint 方法不起作用,作业参数为 NULL (HyperV 2016)

ConvertToReferencePoint method not working, getting NULL for job parameter (HyperV 2016)

我想先创建快照,然后将快照转换为参考点。快照创建成功,我可以在 HyperV 管理器中看到它。但是当我尝试使用 Snapshot 引用调用 ConvertToReferencePoint 方法时,作业输出为 NULL。

创建快照后,我正在获取与其关联的设置数据并对其进行编辑以重命名创建的快照。我从中提取 InstanceID 字段并生成发送到 ConvertToReferencePoint 方法的作业路径。 CComVariant((L"Msvm_VirtualSystemSettingData.CreationClassName=\"Msvm_VirtualSystemSettingData\",InstanceID=\"" + snapRef + L"\"").c_str()));

DeleteSnapshot 和 DeleteSnapshotTree 方法也可以正常工作,即使它们将 Msvm_VirtualSystemSettingData 路径作为参数。我是不是漏了什么。

相似的主题但不同的问题 :

我什至尝试使用 WMI Explorer 工具对参数进行硬编码。

AffectedSnapshot=\hostname\ROOT\virtualization\v2:Msvm_VirtualSystemSettingData.InstanceID="Microsoft:5A58EE16-48E8-46E2-8162-065826537142"
ReferencePointSettings=""

ConvertToReferencePoint: NULL 响应。

        Wbem::Parameters inParams;
        //inParams.add(L"AffectedSnapshot", CComVariant((L"Msvm_VirtualSystemSettingData.CreationClassName=\"Msvm_VirtualSystemSettingData\",InstanceID=\"" + snapRef + L"\"").c_str()));
        inParams.add(L"AffectedSnapshot", CComVariant(L"\\IWF1117030\ROOT\virtualization\v2:Msvm_VirtualSystemSettingData.InstanceID=\"Microsoft:5A58EE16-48E8-46E2-8162-065826537142\""));
        inParams.add(L"ReferencePointSettings", CComVariant(L""));
        Wbem::ParametersPtr outParams(new Wbem::Parameters);
        outParams->add(L"Job", CComVariant());
        m_wbemServices->execObjectMethod(L"Msvm_VirtualSystemSnapshotService", L"Name=\"" + instanceName + L"\"", L"ConvertToReferencePoint", inParams, outParams);

删除快照:工作正常。

std::wstring instanceName = getSingleInstanceNameForWMIClass(L"Msvm_VirtualSystemSnapshotService");
        Wbem::Parameters inParams;
        inParams.add(L"AffectedSnapshot", CComVariant((L"Msvm_VirtualSystemSettingData.CreationClassName=\"Msvm_VirtualSystemSettingData\",InstanceID=\"" + snapRef + L"\"").c_str()));
        Wbem::ParametersPtr outParams(new Wbem::Parameters);
        outParams->add(L"Job", CComVariant());
        m_wbemServices->execObjectMethod(L"Msvm_VirtualSystemSnapshotService", L"Name=\"" + instanceName + L"\"", L"DestroySnapshot", inParams, outParams);

没有错误信息。只是得到 NULL 值。 如果有人有实现此目的的示例代码,请分享。

检查您是如何在 WMI 资源管理器中创建快照的。它应该是 "Recovery" 类型,ConvertToReferencePoint 才能工作。