【问题标题】:hyperv wmi How to pass a parameter as a string?hyperv wmi 如何将参数作为字符串传递?
【发布时间】:2020-02-26 12:17:47
【问题描述】:

我使用较新的 Microsoft.Management.Infrastructure,我想将参数传递给 Msvm_VirtualSystemManagementService 类的 ModifySystemSettings 方法:

https://docs.microsoft.com/en-us/windows/win32/hyperv_v2/modifysystemsettings-msvm-virtualsystemmanagementservice

参数类型是嵌入 Msvm_VirtualSystemSettingData 实例的字符串。

在旧版本 System.Management 中,可以使用 ManagementBaseObject.GetText(TextFormat.WmiDtd20) 将其转换为字符串:

https://docs.microsoft.com/en-us/dotnet/api/system.management.managementbaseobject.gettext?view=netframework-4.8

以下代码显示 ModifySystemSettings 方法的当前实现。 问题是 snapshotInstance.ToString() 显然是错误的。有谁知道如何正确传递参数?


CimInstance snapshotInstance = session.EnumerateAssociatedInstances(hvNamespace, vm, "Msvm_MostCurrentSnapshotInBranch", "Msvm_VirtualSystemSettingData", null, null).FirstOrDefault();

snapshotInstance.CimInstanceProperties["ElementName"].Value = "testSnapshot";
CimMethodParametersCollection modifySystemSettingsParameters = new CimMethodParametersCollection
{
     CimMethodParameter.Create("SystemSettings",snapshotInstance.ToString(),CimType.String, CimFlags.In)
       };

if(virtualSystemManagementService != null)
{
      CimMethodResult result = session.InvokeMethod(hvNamespace, virtualSystemManagementService, "ModifySystemSettings", modifySystemSettingsParameters);
      Console.WriteLine(result.ReturnValue.Value.ToString());
}

我的目标是更改快照的名称。

【问题讨论】:

    标签: c# parameters wmi hyper-v msdn


    【解决方案1】:

    一段时间后,我找到了正确的解决方案。

    CimSerializer 帮助我将其转换为字符串。

    这是后面的代码:

    CimSerializer serializer = CimSerializer.Create();
    byte[] serializedClass = serializer.Serialize(snapshotInstance, InstanceSerializationOptions.None);
    CimMethodParametersCollection modifySystemSettingsParameters = new CimMethodParametersCollection
    {
           CimMethodParameter.Create("SystemSettings",System.Text.Encoding.Unicode.GetString(serializedClass),CimType.String, CimFlags.In)
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-08
      • 2017-06-14
      • 2015-07-05
      • 1970-01-01
      相关资源
      最近更新 更多