配置 Hyper-V 虚拟机 powershell

Ant*_*ito 13 powershell hyper-v

如何重新配置​​ Hyper-V 虚拟机

我希望能够使用 Powershell 更改 VM 配置文件、检查点和虚拟硬盘位置。

我的 Google-FU 只指向我移动,我有大约 100 个要更改的虚拟机,我可以移动文件,我不介意一点停机时间,当为每个虚拟机完成向导时,每个虚拟机大约需要 5 到 15 分钟VM 和那些是较小的,我需要能够在 2 小时内完成所有 100。

如果我需要澄清,请告诉我。

==我被卡住的地方==

是的,我已经看到了该链接并查看了大多数命令,但是没有人做我正在寻找的。

这些文件总共大约 14 TB

大约 100 个 VM 群集在 7 个主机之间。共享存储是 EMC 旋转磁盘,我想将它们移动到 3Par ssd。

现在,我能够成功地做的是关闭虚拟机,移动文件,删除所有虚拟机并通过 powershell 重新创建它们,当我告诉我的 CTO 时,这可能是他关于狗屎小猫的唯一方法。

我想要做的不是移动虚拟机,而是重新配置它们,

在其他作品中能够改变:

在此处输入图片说明

到:

在此处输入图片说明

我希望能够使用 powershell 执行此操作,此外,我还需要能够对检查点、配置文件以及所有其他 Hyper-V VM 组件执行相同的操作。

我可以容忍大约 2 小时的停机时间,通过向导为所有 VM 执行 MOVE 不仅会磨损我的鼠标,而且需要大约 6 小时。

几个星期以来,我也一直在研究这个并测试不同的策略。

====再来一发====

我不想“移动”,我想要做的就是从 hyper-V 中更改设置,移动将花费很长时间,对我来说,通过网络复制文件并更新路径要快得多在 Hyper-V 中,我可以关闭机器。

我认为它不能完成?

Zor*_*che 8

不确定这是否满足您的需求,但我过去曾使用一个示例 powershell 片段将虚拟机(包括所有存储)迁移到新目的地

Get-VM -Name ('ansible-test-acs',
              'ansible-test-web',
              'ansible-test-db') |
ForEach-Object {
    # move everything to d:\hyper-v\vm_name on hv-srv-01
    $MoveOptions = @{
        'Name'                   = $_.Name
        'DestinationHost'        = 'hv-srv-01'
        'IncludeStorage'         = $true
        'DestinationStoragePath' = 'D:\Hyper-V\{0}' -f $_.Name
    }
    $MoveOptions
    Move-VM @MoveOptions -WhatIf
    # Move-VM @MoveOptions
}
Run Code Online (Sandbox Code Playgroud)

将 VM 存储移动到新路径

('ansible-test-web', 'ansible-test-db') |
ForEach-Object {
    Move-VMStorage $_ `
            –DestinationStoragePath "E:\Hyper-V\$_"
}
Run Code Online (Sandbox Code Playgroud)

如果您已将 VM 及其所有文件复制到新位置,并且希望 Hyper-V 开始使用新位置,那么您应该能够执行类似操作。

Remove-VM oldvmname
Import-VM -Register -Path 'path to VM config file'
Run Code Online (Sandbox Code Playgroud)