配置 Hyper-V VM powershell

配置 Hyper-V VM powershell

如何重新配置​​ Hyper-V VM

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

我的 Google-FU 只指引我进行移动,我有大约 100 个 VM 需要更改,我可以移动这些文件,我不介意有一点停机时间,当按照向导操作每个 VM 时,每个 VM 大约需要 5 到 15 分钟,而这些都是较小的 VM,我需要能够在 2 小时内完成全部 100 个 VM。

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

==我被困在哪里==

是的,我已经看到了该链接并查看了大多数命令,但没有一个能满足我的需求。

这些文件总共约 14 TB

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

现在,我已经能够成功关闭虚拟机、移动文件、删除所有虚拟机并通过 powershell 重新创建它们,当我告诉我的 CTO 时,这可能是他解决问题的唯一办法。

我希望能够做的不是移动虚拟机,而是重新配置它们,

在其他作品中可以改变:

在此处输入图片描述

到:

在此处输入图片描述

我希望能够使用 powershell 来执行此操作,同时我还需要能够对检查点、配置文件和所有其他 Hyper-V VM 组件执行同样的事情。

我可以忍受大约 2 小时的停机时间,通过向导对所有 VM 进行移动不仅会磨损我的鼠标而且会花费大约 6 个小时。

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

====再来一次====

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

我认为这不可能完成?

答案1

不太确定这是否能满足您的需要,但我过去曾使用过一个示例 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
}

将虚拟机存储移至新路径

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

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

Remove-VM oldvmname
Import-VM -Register -Path 'path to VM config file'

相关内容