< Back
Move-VM
Post
NAME Move-VM
SYNOPSIS
This cmdlet moves virtual machines to another location.
SYNTAX
Move-VM [-VM] <VirtualMachine[]> [[-Destination] <VIContainer>] [-AdvancedOption <AdvancedOption[]>] [-Datastore
<StorageResource>] [-DiskStorageFormat <VirtualDiskStorageFormat>] [-InventoryLocation <FolderContainer>]
[-NetworkAdapter <NetworkAdapter[]>] [-PortGroup <VirtualPortGroupBase[]>] [-RunAsync] [-Server <VIServer[]>]
[-VMotionPriority <VMotionPriority>] [-Confirm] [-WhatIf] [<CommonParameters>]
DESCRIPTION
This cmdlet moves a virtual machine to the location that is specified by the Destination or the Datastore
parameters. The destination must be a folder, host, cluster, or a resource pool. You can move a virtual machine to
a DRS cluster. Moving a virtual machine to the top level of a non-DRS cluster is only possible if the virtual
machine is in a resource pool in that cluster. If the virtual machine is outside the non-DRS cluster, you need to
specify a virtual machine host in that cluster as destination. When moving virtual machines that are powered on,
vMotion is used. You can move storage and compute resources simultaneously. You can move virtual machines between
vCenter Server systems of vSphere version 6.0 and later. To specify a server different from the default one, use
the Server parameter. When you move a virtual machine from one vCenter Server system to another, only datastores
are supported as storage destinations.
PARAMETERS
-AdvancedOption <AdvancedOption[]>
This parameter is only applicable when a DatastoreCluster object is passed to the Datastore parameter.
Specifies one or more rules for the placement of the virtual machines that you want to relocate.
To indicate that VMs should be stored on different datastores, pass an SdrsVMAntiAffinityRule object to the
parameter. You can set more than one Storage DRS (SDRS) VM anti-affinity rules.
To indicate that the VM disks should be stored on different datastores, pass an SdrsVMDiskAntiAffinityRule
object to the parameter. You can set only one SDRS VM disk anti-affinity rule.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? false
-Datastore <StorageResource>
Specifies the datastore or datastore cluster where you want to move the virtual machines. When you pass a
datastore cluster to the Datastore parameter, you can also set the AdvancedOption parameter.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? true
-Destination <VIContainer>
Specifies a folder, host, cluster, or a resource pool where you want to move the virtual machines. If a
datacenter is specified for the Destination parameter, the virtual machines are moved to the datacenter's
"vmFolder" folder. The "vmFolder" is a system folder and is guaranteed to exist. Passing values to this
parameter through a pipeline is deprecated and will be disabled in a future release.
Required? false
Position? 2
Default value None
Accept pipeline input? True (ByValue)
Accept wildcard characters? true
-DiskStorageFormat <VirtualDiskStorageFormat>
Specifies a new storage format for the hard disk of the virtual machine you want to move. This parameter is
applicable only when moving a virtual machine to a different datastore, using the Datastore parameter. This
parameter accepts Thin, Thick, and EagerZeroedThick values.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? false
-InventoryLocation <FolderContainer>
Specifies a datacenter or a virtual machine folder where you want to move the virtual machine.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? false
-NetworkAdapter <NetworkAdapter[]>
Specifies the virtual machine network adapters you want to migrate to a new port group.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? false
-PortGroup <VirtualPortGroupBase[]>
Specifies the destination port groups for the specified virtual machine network adapters. The number of port
groups should be one, or equal to the number of network adapters specified. If one port group and more than
one network adapters are specified, all network adapters are migrated to the specified port group.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? true
-RunAsync [<SwitchParameter>]
Indicates that the command returns immediately without waiting for the task to complete. In this mode, the
output of the cmdlet is a Task object. For more information about the RunAsync parameter run "help
About_RunAsync" in the VMware PowerCLI console.
Required? false
Position? named
Default value False
Accept pipeline input? False
Accept wildcard characters? false
-Server <VIServer[]>
Specifies the vCenter Server systems on which you want to run the cmdlet. If no value is passed to this
parameter, the command runs on the default servers. For more information about default servers, see the
description of Connect-VIServer.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? true
-VM <VirtualMachine[]>
Specifies the virtual machines you want to move to another location.
Required? true
Position? 1
Default value None
Accept pipeline input? True (ByValue)
Accept wildcard characters? true
-VMotionPriority <VMotionPriority>
Determines the priority that should be used for a vMotion operation.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? false
-Confirm [<SwitchParameter>]
If the value is $true, indicates that the cmdlet asks for confirmation before running. If the value is $false,
the cmdlet runs without asking for user confirmation.
Required? false
Position? named
Default value $true
Accept pipeline input? False
Accept wildcard characters? false
-WhatIf [<SwitchParameter>]
Indicates that the cmdlet is run only to display the changes that would be made and actually no objects are
modified.
Required? false
Position? named
Default value False
Accept pipeline input? False
Accept wildcard characters? false
<CommonParameters>
This cmdlet supports the common parameters: Verbose, Debug,
ErrorAction, ErrorVariable, WarningAction, WarningVariable,
OutBuffer, PipelineVariable, and OutVariable. For more information, see
about_CommonParameters (https:/go.microsoft.com/fwlink/?LinkID=113216).
INPUTS
OUTPUTS
Zero or more relocated VirtualMachine objects
NOTES
-------------------------- Example 1 --------------------------
Get-VM -Name VM | Move-VM -Destination 10.23.112.235
Moves the virtual machine named VM from its current location to the host on IP address 10.23.112.235.
-------------------------- Example 2 --------------------------
Move-VM -VM VM -Destination Folder
Moves the virtual machine to a folder called Folder. Note that you are able to move virtual machines only to
folders containing virtual machines (the 'blue' folders in the vSphere Client).
-------------------------- Example 3 --------------------------
Move-VM -VM 'MyVM' -Destination 'MyDestination'
Moves a powered-on virtual machine from one existing host to another, by using vMotion, passing parameters by name.
-------------------------- Example 4 --------------------------
Move-VM -VM 'MyVM' -Datastore 'MyDatastore'
Moves a powered-on virtual machine from one existing datastore to another, by using storage vMotion, passing
parameters by name.
-------------------------- Example 5 --------------------------
$myDatastoreCluster1 = Get-DatastoreCluster -Name 'MyDatastoreCluster1'
Move-VM -VM 'MyVM1' -Datastore $myDatastoreCluster1
Moves the MyVM1 virtual machine to any datastore in the specified datastore cluster.
-------------------------- Example 6 --------------------------
$myDatastoreCluster1 = Get-DatastoreCluster -Name 'MyDatastoreCluster1'
$myVm2 = Get-VM -Name 'MyVM2'
$vmAntiAffinityRule = New-Object -TypeName
VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.SdrsVMAntiAffinityRule -ArgumentList $myVm2
Move-VM -VM 'MyVM1' -Datastore $myDatastoreCluster1 -AdvancedOption $vmAntiAffinityRule
Moves the MyVM1 virtual machine to the specified datastore cluster and sets a VM anti-affinity rule for the
placement of the virtual machine. The MyVM1 virtual machine will be placed on any datastore in the specified
datastore cluster that does not contain the MyVM2 virtual machine.
-------------------------- Example 7 --------------------------
$myVm1 = Get-VM -Name 'MyVM1'
$vmdks = Get-Harddisk -VM $myVm1
$myDatastoreCluster1 = Get-DatastoreCluster -Name 'MyDatastoreCluster1'
$vmdkAntiAffinityRule = New-Object -TypeName
VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.SdrsVMDiskAntiAffinityRule -ArgumentList $vmdks
Move-VM -VM '$myVm1' -Datastore $myDatastoreCluster1 -AdvancedOption $vmdkAntiAffinityRule
Moves the MyVM1 virtual machine to the specified datastore cluster and sets a VM disk anti-affinity rule for the
placement of the virtual machine. The disks of the MyVM1 virtual machine will be stored on different datastores in
the specified datastore cluster.
-------------------------- Example 8 --------------------------
Get-VM -Name 'MyVM' -Server 'MyServer' | Move-VM -Destination 'NewHost' -Datastore 'DatastoreOnNewHost'
-DiskStorageFormat 'Thin'
Moves a powered-off virtual machine to another datastore on another host and changes its disk storage format to
thin.
-------------------------- Example 9 --------------------------
Connect-VIServer 'myVC1' -Username <username> -Password <pass>
Connect-VIServer 'myVC2' -Username <username> -Password <pass>
$vm = Get-VM 'myVM' -Location 'myVMhostOnVC1'
$destination = Get-VMHost 'MyVMhostOnVc2'
$networkAdapter = Get-NetworkAdapter -VM $vm
$destinationPortGroup = Get-VDPortgroup -VDSwitch 'myVDSwitchOnVC2' -Name 'myPortGroup'
$destinationDatastore = Get-Datastore 'MyDatastoreOnVc2'
$vm | Move-VM -Destination $destination -NetworkAdapter $networkAdapter -PortGroup $destinationPortGroup
-Datastore $destinationDatastore
Moves the MyVM virtual machine from one vCenter Server system to another. Specifies myPortGroup as the destination
port group and MyDatastoreOnVc2 as the destination datastore.
Note: This functionality works only against vSphere 6.0 and later environments.
RELATED LINKS
Online Version: https://code.vmware.com/doc/preview?id= ... ve-VM.html
Get-VM
Remove-VM
New-VM
Set-VM
Start-VM
Stop-VM
Suspend-VM
Restart-VM
SYNOPSIS
This cmdlet moves virtual machines to another location.
SYNTAX
Move-VM [-VM] <VirtualMachine[]> [[-Destination] <VIContainer>] [-AdvancedOption <AdvancedOption[]>] [-Datastore
<StorageResource>] [-DiskStorageFormat <VirtualDiskStorageFormat>] [-InventoryLocation <FolderContainer>]
[-NetworkAdapter <NetworkAdapter[]>] [-PortGroup <VirtualPortGroupBase[]>] [-RunAsync] [-Server <VIServer[]>]
[-VMotionPriority <VMotionPriority>] [-Confirm] [-WhatIf] [<CommonParameters>]
DESCRIPTION
This cmdlet moves a virtual machine to the location that is specified by the Destination or the Datastore
parameters. The destination must be a folder, host, cluster, or a resource pool. You can move a virtual machine to
a DRS cluster. Moving a virtual machine to the top level of a non-DRS cluster is only possible if the virtual
machine is in a resource pool in that cluster. If the virtual machine is outside the non-DRS cluster, you need to
specify a virtual machine host in that cluster as destination. When moving virtual machines that are powered on,
vMotion is used. You can move storage and compute resources simultaneously. You can move virtual machines between
vCenter Server systems of vSphere version 6.0 and later. To specify a server different from the default one, use
the Server parameter. When you move a virtual machine from one vCenter Server system to another, only datastores
are supported as storage destinations.
PARAMETERS
-AdvancedOption <AdvancedOption[]>
This parameter is only applicable when a DatastoreCluster object is passed to the Datastore parameter.
Specifies one or more rules for the placement of the virtual machines that you want to relocate.
To indicate that VMs should be stored on different datastores, pass an SdrsVMAntiAffinityRule object to the
parameter. You can set more than one Storage DRS (SDRS) VM anti-affinity rules.
To indicate that the VM disks should be stored on different datastores, pass an SdrsVMDiskAntiAffinityRule
object to the parameter. You can set only one SDRS VM disk anti-affinity rule.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? false
-Datastore <StorageResource>
Specifies the datastore or datastore cluster where you want to move the virtual machines. When you pass a
datastore cluster to the Datastore parameter, you can also set the AdvancedOption parameter.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? true
-Destination <VIContainer>
Specifies a folder, host, cluster, or a resource pool where you want to move the virtual machines. If a
datacenter is specified for the Destination parameter, the virtual machines are moved to the datacenter's
"vmFolder" folder. The "vmFolder" is a system folder and is guaranteed to exist. Passing values to this
parameter through a pipeline is deprecated and will be disabled in a future release.
Required? false
Position? 2
Default value None
Accept pipeline input? True (ByValue)
Accept wildcard characters? true
-DiskStorageFormat <VirtualDiskStorageFormat>
Specifies a new storage format for the hard disk of the virtual machine you want to move. This parameter is
applicable only when moving a virtual machine to a different datastore, using the Datastore parameter. This
parameter accepts Thin, Thick, and EagerZeroedThick values.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? false
-InventoryLocation <FolderContainer>
Specifies a datacenter or a virtual machine folder where you want to move the virtual machine.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? false
-NetworkAdapter <NetworkAdapter[]>
Specifies the virtual machine network adapters you want to migrate to a new port group.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? false
-PortGroup <VirtualPortGroupBase[]>
Specifies the destination port groups for the specified virtual machine network adapters. The number of port
groups should be one, or equal to the number of network adapters specified. If one port group and more than
one network adapters are specified, all network adapters are migrated to the specified port group.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? true
-RunAsync [<SwitchParameter>]
Indicates that the command returns immediately without waiting for the task to complete. In this mode, the
output of the cmdlet is a Task object. For more information about the RunAsync parameter run "help
About_RunAsync" in the VMware PowerCLI console.
Required? false
Position? named
Default value False
Accept pipeline input? False
Accept wildcard characters? false
-Server <VIServer[]>
Specifies the vCenter Server systems on which you want to run the cmdlet. If no value is passed to this
parameter, the command runs on the default servers. For more information about default servers, see the
description of Connect-VIServer.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? true
-VM <VirtualMachine[]>
Specifies the virtual machines you want to move to another location.
Required? true
Position? 1
Default value None
Accept pipeline input? True (ByValue)
Accept wildcard characters? true
-VMotionPriority <VMotionPriority>
Determines the priority that should be used for a vMotion operation.
Required? false
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? false
-Confirm [<SwitchParameter>]
If the value is $true, indicates that the cmdlet asks for confirmation before running. If the value is $false,
the cmdlet runs without asking for user confirmation.
Required? false
Position? named
Default value $true
Accept pipeline input? False
Accept wildcard characters? false
-WhatIf [<SwitchParameter>]
Indicates that the cmdlet is run only to display the changes that would be made and actually no objects are
modified.
Required? false
Position? named
Default value False
Accept pipeline input? False
Accept wildcard characters? false
<CommonParameters>
This cmdlet supports the common parameters: Verbose, Debug,
ErrorAction, ErrorVariable, WarningAction, WarningVariable,
OutBuffer, PipelineVariable, and OutVariable. For more information, see
about_CommonParameters (https:/go.microsoft.com/fwlink/?LinkID=113216).
INPUTS
OUTPUTS
Zero or more relocated VirtualMachine objects
NOTES
-------------------------- Example 1 --------------------------
Get-VM -Name VM | Move-VM -Destination 10.23.112.235
Moves the virtual machine named VM from its current location to the host on IP address 10.23.112.235.
-------------------------- Example 2 --------------------------
Move-VM -VM VM -Destination Folder
Moves the virtual machine to a folder called Folder. Note that you are able to move virtual machines only to
folders containing virtual machines (the 'blue' folders in the vSphere Client).
-------------------------- Example 3 --------------------------
Move-VM -VM 'MyVM' -Destination 'MyDestination'
Moves a powered-on virtual machine from one existing host to another, by using vMotion, passing parameters by name.
-------------------------- Example 4 --------------------------
Move-VM -VM 'MyVM' -Datastore 'MyDatastore'
Moves a powered-on virtual machine from one existing datastore to another, by using storage vMotion, passing
parameters by name.
-------------------------- Example 5 --------------------------
$myDatastoreCluster1 = Get-DatastoreCluster -Name 'MyDatastoreCluster1'
Move-VM -VM 'MyVM1' -Datastore $myDatastoreCluster1
Moves the MyVM1 virtual machine to any datastore in the specified datastore cluster.
-------------------------- Example 6 --------------------------
$myDatastoreCluster1 = Get-DatastoreCluster -Name 'MyDatastoreCluster1'
$myVm2 = Get-VM -Name 'MyVM2'
$vmAntiAffinityRule = New-Object -TypeName
VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.SdrsVMAntiAffinityRule -ArgumentList $myVm2
Move-VM -VM 'MyVM1' -Datastore $myDatastoreCluster1 -AdvancedOption $vmAntiAffinityRule
Moves the MyVM1 virtual machine to the specified datastore cluster and sets a VM anti-affinity rule for the
placement of the virtual machine. The MyVM1 virtual machine will be placed on any datastore in the specified
datastore cluster that does not contain the MyVM2 virtual machine.
-------------------------- Example 7 --------------------------
$myVm1 = Get-VM -Name 'MyVM1'
$vmdks = Get-Harddisk -VM $myVm1
$myDatastoreCluster1 = Get-DatastoreCluster -Name 'MyDatastoreCluster1'
$vmdkAntiAffinityRule = New-Object -TypeName
VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.SdrsVMDiskAntiAffinityRule -ArgumentList $vmdks
Move-VM -VM '$myVm1' -Datastore $myDatastoreCluster1 -AdvancedOption $vmdkAntiAffinityRule
Moves the MyVM1 virtual machine to the specified datastore cluster and sets a VM disk anti-affinity rule for the
placement of the virtual machine. The disks of the MyVM1 virtual machine will be stored on different datastores in
the specified datastore cluster.
-------------------------- Example 8 --------------------------
Get-VM -Name 'MyVM' -Server 'MyServer' | Move-VM -Destination 'NewHost' -Datastore 'DatastoreOnNewHost'
-DiskStorageFormat 'Thin'
Moves a powered-off virtual machine to another datastore on another host and changes its disk storage format to
thin.
-------------------------- Example 9 --------------------------
Connect-VIServer 'myVC1' -Username <username> -Password <pass>
Connect-VIServer 'myVC2' -Username <username> -Password <pass>
$vm = Get-VM 'myVM' -Location 'myVMhostOnVC1'
$destination = Get-VMHost 'MyVMhostOnVc2'
$networkAdapter = Get-NetworkAdapter -VM $vm
$destinationPortGroup = Get-VDPortgroup -VDSwitch 'myVDSwitchOnVC2' -Name 'myPortGroup'
$destinationDatastore = Get-Datastore 'MyDatastoreOnVc2'
$vm | Move-VM -Destination $destination -NetworkAdapter $networkAdapter -PortGroup $destinationPortGroup
-Datastore $destinationDatastore
Moves the MyVM virtual machine from one vCenter Server system to another. Specifies myPortGroup as the destination
port group and MyDatastoreOnVc2 as the destination datastore.
Note: This functionality works only against vSphere 6.0 and later environments.
RELATED LINKS
Online Version: https://code.vmware.com/doc/preview?id= ... ve-VM.html
Get-VM
Remove-VM
New-VM
Set-VM
Start-VM
Stop-VM
Suspend-VM
Restart-VM