PowerCLI

 View Only
  • 1.  Move-VM between ESXi hosts managed by vCenter Server

    Posted Jan 14, 2022 05:50 PM

    When I invoke Move-VM to migrate VMs between two ESXi hosts (7.0.2 build 18538813), both managed in the same vCenter Server (7.0.3 build 18778458), I'm receiving errors that appear to conflict.

    I want to move both compute and storage from one ESXi host and datastore to a second ESXi host and datastore. Both ESXi hosts are in the same datacenter.
    The manual vSphere Client steps are: Migrate > Change both compute and storage resource > Select compute > Select storage > Select networks > Select vMotion priority > Finish.
    I want to reproduce that vMotion in PowerCLI. I run into errors that appear to conflict, and I'm not sure what I'm missing:

    PowerCLI:
    VMware.VimAutomation.Core 12.4.0.18627056

    Connect-VIServer -Menu
    # connect to both ESXi hosts and to vCenter Server
    
    $vmName = 'web01.domain.tld'
    $destESX = 'vm02.domain.tld'
    $destDS = 'Primary-vm02'
    $vm = Get-VM -Name $vmName
    $esx = Get-VMHost -Datastore $destDS -Server $destESX
    $ds = Get-Datastore -Name $destDS -Server $destESX
    
    Move-VM -VM $vm -Destination $esx -Datastore $ds

     

    When I invoke Move-VM while the ESXi hosts are managed by the vCenter Server, I get the following error:

    Move-VM Access to resource settings on the host is restricted to the server that is managing it: 'x.x.x.x'
    
    + CategoryInfo : NotSpecified: (:) [Move-VM], VimException
    + FullyQualifiedErrorId : Core_BaseCmdlet_UnknownError,VMware.VimAutomation.ViCore.Cmdlets.Commands.MoveVM

    Following KB 2021618, I stop vpxa service and restart hostd on both ESXi servers, then establish a new Connect-VIServer session with each ESXi. When I run Move-VM again, I see this error:

    Move-VM This functionality is only available when connected to VMware vCenter Server.
    
    + CategoryInfo : InvalidOperation: (:) [Move-VM], VimException
    + FullyQualifiedErrorId : Client20_ConnectivityServiceImpl_TryValidateVCConnection_ConnectedToESX,VMware.VimAutomation.ViCore.Cmdlets.Commands.MoveVM

     

    I am missing something here. Can you point me in the right direction? Thanks in advance!

     



  • 2.  RE: Move-VM between ESXi hosts managed by vCenter Server

    Posted Jan 14, 2022 06:00 PM

    When you had that 1st error where you connected to only the vCenter, or where there also connections to the ESXi nodes?



  • 3.  RE: Move-VM between ESXi hosts managed by vCenter Server

    Posted Jan 14, 2022 07:27 PM

    Thank you for that pointer - I think I was inadvertently only connected to one, instead of all three endpoints. I was running Connect-VIServer individually for each endpoint, instead of for all three at once.

    When verifying that my PowerCLI session is connected to both ESXi hosts and vCenter, I get this result:

    PS C:\Users\user> connect-viserver -server vm01.domain.tld,vm02.domain.tld,vcenter.domain.tld
    
    Name                           Port  User                          
    ----                           ----  ----                          
    vm01.domain.tld                 443   root                          
    vm02.domain.tld                 443   root                          
    vcenter.domain.tld              443   VSPHERE.LOCAL\Administrator   
    
    PS C:\Users\user> Move-VM -VM $vm -Destination $esx -Datastore $ds 
    Move-VM : 1/14/2022 2:16:31 PM	Move-VM		This functionality is only available when connected to VMware vCenter Server.	
    At line:1 char:1
    + Move-VM -VM $vm -Destination $esx -Datastore $ds
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [Move-VM], VimException
        + FullyQualifiedErrorId : Client20_ConnectivityServiceImpl_TryValidateVCConnection_ConnectedToESX,VMware.VimAutomation.ViCore.Cmdlets.Commands. 
       MoveVM
     

     



  • 4.  RE: Move-VM between ESXi hosts managed by vCenter Server
    Best Answer

    Posted Jan 14, 2022 07:40 PM

    If both those ESXi nodes, source and destination, are managed by the same vCenter, you should only connect to the vCenter.



  • 5.  RE: Move-VM between ESXi hosts managed by vCenter Server

    Posted Jan 14, 2022 08:09 PM

    Great, thank you.

    I connected my PowerCLI session to only the vCenter, and received the exact same error:

    Move-VM		This functionality is only available when connected to VMware vCenter Server.

     

    That suggested the problem was my Move-VM syntax, rather than the connection to vCenter. It looks like my command needed to have -Destination parameter set, as well.

    I changed my Move-VM command to the following, which ran successfully and had the desired result:

    $vm = Get-VM -name 'web01.domain.tld -Location 'vm01.domain.tld'
    $destESX = Get-VMHost 'vm02.domain.tld'
    $destDS = Get-Datastore 'Primary-vm02' 
    
    $vm | Move-VM -Destination $destESX -Datastore $destDS

    Thanks for your help!