Моя цель - программно создать новую виртуальную машину и прикрепить существующий файл VHDX к этой машине. Единственными входами для моей программы являются имя виртуальной машины и путь VHDX. Я реализую это с использованием пространства имен WMI-провайдера Hyper-V и Virtualization V2. В основном я реализую то, что дается в статье this как сценарий. Как упоминалось в ссылке this, я сначала добавляю синтетический диск, а затем пытаюсь прикрепить файл vhdx.Hyper-V не может подключить существующий файл vhd к вновь созданной виртуальной машине?
Я могу успешно создать виртуальную машину и добавить синтетический диск к машине. Однако, когда я пытаюсь добавить файл vhdx на жесткий диск, я получаю следующую ошибку. «Новая машина Virtaul» не удалось добавить ресурсы (идентификатор виртуальной машины ...). Код ошибки задания - 32768, а состояние задания - 10, что соответствует «Failed».
Это код, который я использую для подключения файла vhdx.
//Add VHD
ManagementObject^ hardDisk = GetResourceAllocationsettingDataDefault(scope, 31, "Microsoft:Hyper-V:Virtual Hard Disk", "-");
hardDisk = (ManagementObject^)hardDisk->Clone();
array<String^>^ connection = gcnew array<String^>(1);
connection[0]="E:\\test.vhdx"; //Path to *.vhd file
hardDisk["Parent"] = synthetic->Path->Path; //WMI path-> This is the path of the synthetic drive that I added in the previous step.
hardDisk["HostResource"] = connection;
array<String^>^HDs = gcnew array<String^>(1);
HDs[0] = hardDisk->GetText(TextFormat::WmiDtd20);
ManagementBaseObject^ VHDinParams = vmtoCreate->GetMethodParameters("AddResourceSettings");
VHDinParams["AffectedConfiguration"] = settings->Path->Path;
VHDinParams["ResourceSettings"] = HDs;
ManagementBaseObject^ VHDoutParams = vmtoCreate->InvokeMethod("AddResourceSettings", VHDinParams, nullptr);
Для метода GetResourceAllocationsettingDataDefault см this ссылки. Когда я анализирую переменную VHDoutParams для сообщения об ошибке и кода ошибки, я просто получаю приведенные ниже данные. Описание ошибки: «Новая машина Virtaul» не смогла добавить ресурсы (идентификатор виртуальной машины ...). Код ошибки: 32768 (неудачно) Состояние вакансии: 10
Я не знаю, чего у меня нет. Я запускаю программу в повышенном режиме как администратор. У меня нет антивируса, установленного на хост-машине Hyper-V. Я также тщательно искал Интернет, но ничего не нашел. Что мне не хватает или что-то не так?