hyperv wmi 如何将参数作为字符串传递?
hyperv wmi How to pass a parameter as a string?
我使用较新的 Microsoft.Management.Infrastructure,我想将参数传递给 class Msvm_VirtualSystemManagementService:
的 ModifySystemSettings 方法
参数类型是一个嵌入Msvm_VirtualSystemSettingData实例的字符串。
在旧版本 System.Management 中,可以使用 ManagementBaseObject.GetText(TextFormat.WmiDtd20) 将其转换为字符串:
以下代码显示了 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());
}
我的目标是更改快照的名称。
一段时间后,我找到了正确的解决方案。
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)
};
我使用较新的 Microsoft.Management.Infrastructure,我想将参数传递给 class Msvm_VirtualSystemManagementService:
的 ModifySystemSettings 方法参数类型是一个嵌入Msvm_VirtualSystemSettingData实例的字符串。
在旧版本 System.Management 中,可以使用 ManagementBaseObject.GetText(TextFormat.WmiDtd20) 将其转换为字符串:
以下代码显示了 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());
}
我的目标是更改快照的名称。
一段时间后,我找到了正确的解决方案。
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)
};