首页 文章

Hyper-V无法将现有vhd文件附加到新创建的虚拟机?

提问于
浏览
0

我的目标是以编程方式创建一个新的虚拟机并将现有的vhdx文件附加到该计算机 . 我的程序的唯一输入是VM名称和VHDX路径 . 我'm implementing this using Hyper-V WMI Provider and Virtualization V2 namespace. Basically I'm将this文章中的内容实现为脚本 . 如this链接中所述,我首先添加一个合成驱动器,然后尝试附加vhdx文件 .

我能够成功创建虚拟机并向计算机添加合成驱动器 . 但是,当我尝试添加硬盘vhdx文件时,我收到以下错误 . “新Virtaul机器”未能添加资源 . (虚拟机ID ...) . 作业错误代码为32768,作业状态为10,对应于“失败” .

这是我用来连接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 link . 当我分析VHDoutParams变量的错误消息和错误代码时,我只是得到以下详细信息 . 错误说明:'New Virtaul Machine'无法添加资源 . (虚拟机ID ...) . 错误代码:32768(失败)作业状态:10

我不知道我错过了什么 . 我以管理员身份在提升模式下运行程序 . 我没有在Hyper-V主机上安装防病毒软件 . 我也在网上彻底搜索过,但找不到任何帮助 . 我错过了什么或做错了什么?

1 回答

  • 0

    vhdx文件仅适用于第2代VM . 请检查是否也可能是未识别的错误

相关问题