Я использую более новую структуру Microsoft.Management.Infrastructure и хочу передать параметр в метод ModifySystemSettings класса Msvm_VirtualSystemManagementService:
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());
}
Моя цель - изменить имя снимка.