Hyper-V无法将现有vhd文件附加到新创建的虚拟机
Hyper-V unable to attach existing vhd file to newly created virtual machine?
我的目标是以编程方式创建一个新的虚拟机,并将现有的vhdx文件附加到该机器上。我的程序的唯一输入是VM名称和VHDX路径。我使用Hyper-V WMI Provider和Virtualization V2命名空间来实现这一点。基本上,我将实现本文中给出的脚本。正如这个链接中提到的,我首先添加一个合成驱动器,然后尝试附加vhdx文件。
我能够成功地创建一个虚拟机并向该机器添加一个合成驱动器。但是,当我尝试添加硬盘vhdx文件时,我得到以下错误。"新虚拟机"添加资源失败。(虚拟机ID…)。作业错误码为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方法,请参考此链接。当我分析VHDoutParams变量的错误消息和错误代码时,我只得到以下详细信息。错误描述:"新建虚拟机"添加资源失败。(虚拟机ID…)。错误码:32768(失败)作业状态:10
我不知道我错过了什么。我以管理员的身份在升级模式下运行程序。我没有在Hyper-V主机上安装防病毒软件。我也彻底搜索了互联网,但找不到任何帮助。我错过了什么或做错了什么?vhdx文件仅适用于第二代虚拟机。请检查是否有错误
相关文章:
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 如何使用CLion在Mac上创建一个新的.txt文件
- C++:继续创建新的变量可以吗
- 如何使用新运算符跟踪在循环中创建的 QLabel
- C++ 如何在将新对象分配给另一个对象时创建新对象
- C++ 警告:将新创建的 gsl::owner<> 分配给非所有者
- 重用对象与创建新对象
- C++,创建新对象时类的对象更改
- 将一个 QWidget 链接到另一个新创建的 QWidget
- 使用Visual Studio在虚幻引擎中创建一个新的类c ++给了我太多的错误
- cout 新创建的对象引发运行时错误
- 使用新运算符C++创建多维数组的简单方法
- C 矢量元素擦除与新向量创建
- 如何使用安置新操作员创建对象数组
- 我如何在参考上使用数据成员而不使用新关键字创建对象
- 通过使用新操作员创建对象会导致未解决的外部符号错误C FTGL
- 使用新关键字创建的C 对象不会呈现;在堆栈上创建的对象确实可以
- 将 QFile::copy 创建创建文件的副本或将内容从一个文件移动到另一个文件
- 部分模板绑定,将新模板创建为类型
- 管理用新char*创建但用自定义分配器分配给std::vector元素的内存块