以编程方式将 VHD 附加到远程 Hyper-V VM

2023-12-02

使用 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(使用前将#替换为@)

以编程方式将 VHD 附加到远程 Hyper-V VM 的相关文章

  • 是否有与 posix_memalign 对应的 C++ 版本?

    当我打电话时posix memalign http man7 org linux man pages man3 posix memalign 3 html为类型的对象分配对齐的内存Foo在我的 C 代码中 我需要做一个reinterpret
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • 使用 GCP 的数据存储区时如何区分代码是在模拟器中运行还是在 GKE 中运行

    按照中给出的说明进行操作后 我不确定是否遗漏了任何内容https cloud google com datastore docs tools datastore emulator https cloud google com datasto
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 为什么从字典中获取时会得到 Action<> 的克隆?

    我有以下字典 private Dictionary
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 在mysql连接字符串中添加应用程序名称/程序名称[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在寻找一种解决方案 在连接字符串中添加应用程序名称或程序名称 以便它在 MySQL Workbench 中的 客户端连接 下可见 SQL
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli
  • 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?

    当我实际上没有什么可以移动 复制的时候 我是否需要处理这些情况memmove memcpy 作为边缘情况 int numberOfBytes if numberOfBytes 0 memmove dest source numberOfBy
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • 为什么 pthread_join() 不会造成死锁?

    下面是我希望程序陷入死锁的程序 因为 pthread join 是线程上的阻塞等待 它正在等待终止 但我看到 pthread join 不会阻塞并返回失败 35 EDEADLK 你能帮我理解为什么 pthread join 解除阻塞吗 因为
  • 通过 Intent 发送电子邮件:SecurityException

    以下是我通过 Gmail 应用程序发送电子邮件的方法 Intent emailIntent new Intent Intent ACTION SEND emailIntent setClassName com google android
  • CSS:如何使文本与周围边框居中

    我正在尝试将一条线穿过整个背景的文本居中 文本的两侧都有一些填充 您根本看不到线条 我很难找到一个好的纯 CSS 方法来解决这个问题 这是一个明显错误的 jsfiddle 但它是一个开始 http jsfiddle net gtspk HT
  • android:ListView 中的复选框(所选元素的奇怪行为)

    I found here and here类似的问题 但问题略有不同 在 ListView 中 我尝试放置一个适配器 从基本适配器扩展 其中包含复选框 列表视图布局
  • Gulp-sass 不会编译为 CSS

    我无法将 grunt sass 编译为 css 看过很多其他类似的帖子并使用了建议 但似乎没有任何效果 我可以让其他插件正常工作 例如 del 来删除东西 如下所示 所以看来我的环境没问题 并且我可以让普通的 vanilla sass 编译
  • 如何在express和socket.io上使用passport?

    我目前正在尝试为我的 node js 应用程序设置基本身份验证系统 现在我使用express 3 0 0rc5 passport 0 1 12 和socket io 0 9 10 以及Mongoose 作为会话数据的存储 我也一直在玩eve
  • Perl 多行字符串正则表达式

    我尝试通过逐行读取文件来查找文件中的所有字符串 在 或 之间 my strings open FILE file or die File operation failed foreach my line
  • 创建带有文章标题的 url

    我在 MongoDB 中有文章 我希望文章的 URL 易于阅读 如果我有一篇名为 如何通过 Heroku 无缝使用 Flask 和 MongoDB 的文章 我希望 URL 类似于localhost 5000 blog how to use
  • 从我的应用程序中的特定位置打开街景

    我正在尝试从我的 Android 应用程序中打开全景模式下的 Google 街景 我真的想打开 Google 街景而不是 Google 地图 因为我想将它与使用 VR 眼镜的虚拟现实应用程序一起使用 该应用程序使用立体视图和全景模式 我想要
  • 当我缩减 Azure 角色时哪些实例会停止?

    假设我有一个正在运行三个实例的 Azure 角色 我要求 Azure 通过管理门户或管理 API 将角色计数更改为两个 Azure 将如何决定取消哪个角色 正如英国开发人员提到的 Windows Azure Fabric 控制器决定关闭哪些
  • 无法从共享首选项中获取值

    我想从下面定义的共享首选项加载名称的值 但我不能 如何提取名称的值并对其进行烘烤 或者最好将其放入文本字 段中 public class FillingActivity extends Activity TextView username
  • 错误解析/page.xhtml:错误跟踪[行:42]实体“nbsp”被引用,但未声明

    我想在 JSF 页面中使用不间断空格 我知道 在纯 HTML 中我可以使用 nbsp 为此 这工作得很好 然而 当我把这些 nbsp 在 Facelets 页面中 则错误如下 解析 page xhtml 时出错 错误跟踪 行 42 引用了实
  • 从 JNI 调用 main 方法失败

    我创建了一个 C 类 应该调用Main main依照指示 http docs oracle com javase 7 docs technotes guides jni spec invocation html wp9502 我没有让它工作
  • List 的自定义包含 c#

    我正在尝试在列表中使用 List Contains 我要比较的对象来自 C 中的服务引用 并且它们的 Equals 方法不适合我的需求 我一直在研究 IEquatables 或如何在我 给定 的对象中覆盖我的 Equals 方法 但我似乎找
  • 从原型迁移到 jquery

    我正在将 js 库从原型迁移到 jquery 但是 我不知道如何替换以下代码 var utilityMethods autoHide function element Element addMethods SPAN utilityMetho
  • 具有 64 位整数的 PyQt4 spinbox

    是否可以修改 PyQt spinbox 以处理大于 32 位的整数 2147483648 2147483647 我知道可以用 C 编写一个具有 64 位 int 数据类型的新旋转框 但这会变得复杂 您可以使用以下命令获得值大于 32 位的旋
  • 缩放图像以适合边界框

    是否有纯 CSS 解决方案将图像缩放到边界框 保持纵横比 如果图像比容器大 则此方法有效 img max width 100 max height 100 Example 用例 1 有效 http jsfiddle net Jp5AQ 2
  • 是否可以从汇编文件中引用 C 枚举?

    系统调用 h enum Syscall OPEN FILE READ FILE CLOSE FILE 系统调用 extern WRITE TO SCREEN global write to screen write to screen mo
  • 如何在Win8/Metro/WinRT中获取DocumentsLibrary的绝对路径?

    我的 manifestappx 文件设置可以访问文档库访问和文件关联 但是当我调用 Windows Storage KnownFolders DocumentsLibrary gt Path 路径返回一个空字符串 如何获得正确返回的路径 先
  • 以编程方式将 VHD 附加到远程 Hyper-V VM

    使用 Hyper V 管理器 我可以连接到远程 VM 主机 转到 VM 的设置 并将现有 VHD 文件添加为新硬盘 如果 VM 主机运行 Server 2008 R2 并且磁盘连接到 SCSI 控制器 我什至可以在 VM 运行时执行此操作