move-vm 不起作用:找不到名称相同的虚拟机

move-vm 不起作用:找不到名称相同的虚拟机

我正在尝试使用 move-vm 命令在两个 Vcenter(从 6.5 到 7.0)之间交叉迁移 VM,但是出现问题,找不到我的测试 VM,甚至基本的 get-vm 也找不到它。

$global:DefaultVIServers

Name                           Port  User
----                           ----  ----
host1.. 443   x.LOCAL\Admini...
host2.. 443   y.LOCAL\Admini...

$destination = 'new-host'
get-vm test-vm

Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
test-vm              PoweredOff 2        4.000


Move-VM -VM test-vm -Destination $destination
Move-VM : 10/12/2022 7:16:06 AM Move-VM         Could not find VirtualMachine with name 'test-vm'.
At line:1 char:1
+ Move-VM -VM test-vm -Destination $destination
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (test-vm:String) [Move-VM], VimException
    + FullyQualifiedErrorId : Core_ObnSelector_SelectObjectByNameCore_ObjectNotFound,VMware.VimAutomation.ViCore.Cmdlets.Commands.MoveVM

Move-VM : 10/12/2022 7:16:06 AM Move-VM         Value cannot be found for the mandatory parameter VM
At line:1 char:1
+ Move-VM -VM test-vm -Destination $destination
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Move-VM], VimException
    + FullyQualifiedErrorId : Core_BaseCmdlet_UnknownError,VMware.VimAutomation.ViCore.Cmdlets.Commands.MoveVM

尝试使用 -Server 选项:不起作用,看起来我只能在整个命令中使用此选项一次

 Move-VM -VM test-vm -server 'host1'  -Destination $destination -Server 'host2'
Move-VM : Cannot bind parameter because parameter 'Server' is specified more than once. To provide multiple values to parameters that can accept multiple values, use the array syntax. For example, "-parameter value1,value2,value3".
At line:1 char:98

答案1

如果要将虚拟机从 vCenter A 移动到 vCenter B,请使用VMware 转换工具
您可以毫无问题地启动虚拟机。此外,还有一个测试版程序,也许您可​​以尝试新工具。请注意虚拟机客户操作系统,因为 vSphere 7 上已弃用某些操作系统。

答案2

在您当前的配置中,无法进行迁移。

VMware VM 迁移到另一个 vCenter 的要求

  • 源和目标 vCenter Server 实例和 ESXi 主机必须运行 6.0 或更高版本。
    是的
  • 源 vCenter 和目标 vCenter 应该是同一版本。
  • 跨 vCenter Server 和长距离 vMotion 功能需要 Enterprise Plus 许可证。
    未知
  • 使用 vSphere Web Client 时,两个 vCenter Server 实例都必须处于增强链接模式,并且必须位于同一个 vCenter 单点登录 (SSO) 域中,以便源 vCenter Server 可以对目标 vCenter Server 进行身份验证。

如您所见,在当前配置中,简单的直接迁移是不可能的。如果您拥有 Enterprise Plus 许可证,您可以更新 6.5 vCenter 并将其链接到其他 vCenter,然后迁移应该可以进行。

否则,您可以手动迁移(关闭 VM、从 vCenter 中删除、根据需要将文件移动到新的数据存储、注册 VM、打开 VM),也可以使用 VMware 转换器进行转换(为此也必须关闭 VM)。

答案3

对于 move-vm cmdlet,-VM 参数必须是 VM 对象,而不仅仅是 VM 的名称。因此它应该像这样工作:

$vm = get-vm test-vm
Move-VM -VM $vm -Destination $destination

请查看 move-vm 的在线帮助,了解其他示例,例如使用管道等:

get-help move-vm -examples

答案4

由于两个 Vcenter 共享相同的数据存储,因此对我来说,此解决方案最有效:

  1. 保存虚拟机 vmx 路径文件,例如Get-VM | Select Name, @{N="VM Config File";E={$_.extensiondata.config.files.vmpathname}}

  2. 在 Vc1 上取消注册虚拟机

  3. 在 Vc2 上注册虚拟机:New-VM -VMFilePath '<PATH>' -ResourcePool 'Cluster'

相关内容