使用 Hyper-V 管理器,我可以连接到远程 VM 主机,转到 VM 的设置,并将现有 .VHD 文件添加为新硬盘。如果 VM 主机运行 Server 2008 R2,并且磁盘连接到 SCSI 控制器,我什至可以在 VM 运行时执行此操作(请参阅Hyper-V R2 中的新增功能).
手动执行此操作,一切都很好。问题是,现在我想将其自动化,这样我就可以在一些自动化测试期间即时附加不同的 VHD。
我已经有了通过 WMI 连接到远程 VM 主机并通过调用启动/停止 VM 的 C# 代码请求状态改变,我想将其扩展为能够说“这是 VHD 的路径,将其作为 SCSI 驱动器附加到此 VM”。但看着WMI 虚拟化类列表,我不知道该怎么做。
我发现的最接近的是Mount的方法Msvm_图像管理服务,但这似乎在当前操作系统中安装了 VHD,这不是我想要的。
有必要添加合成盘(资源类型。Disk, 资源子类型。磁盘合成)使用 Msvm_VirtualSystemManagementService.AddVirtualSystemResources。父级 = SCSI 控制器的 WMI 路径。
ManagementObject synthetic = Utilities.GetResourceAllocationSettingData(scope,
ResourceType.Disk, ResourceSubType.DiskSynthetic);
synthetic["Parent"] = <ideControllerPath>; //or SCSI controller path (WMI path)
synthetic["Address"] = <diskDriveAddress>; //0 or 1 for IDE
string[] RASDs = new string[1];
RASDs[0] = synthetic.GetText(TextFormat.CimDtd20);
然后附加虚拟硬盘(资源类型。存储范围, 资源子类型。VHD)使用 Msvm_VirtualSystemManagementService.AddVirtualSystemResources。 Parent = 合成磁盘的 WMI 路径,联系= *.vhd 文件路径。
ManagementObject hardDisk = Utilities.GetResourceAllocationSettingData(scope,
ResourceType.StorageExtent, ResourceSubType.VHD);
hardDisk["Parent"] = <syntheticPath>; //WMI path
string[] connection = { <vhdPath> }; //Path to *.vhd file
hardDisk["Connection"] = connection;
string[] RASDs = new string[1];
RASDs[0] = hardDisk.GetText(TextFormat.CimDtd20);
Use 虚拟化示例的常用实用程序 and WMI资源管理器.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)