Edit

Share via


Move-VM

Moves a virtual machine to a new Hyper-V host.

Syntax

Move-VM
    [-ComputerName <String[]>]
    [-Credential <PSCredential[]>]
    [-Name] <String>
    [-DestinationHost] <String>
    [-DestinationCredential <PSCredential>]
    [-IncludeStorage]
    [-DestinationStoragePath <String>]
    [-ResourcePoolName <String>]
    [-RetainVhdCopiesOnSource]
    [-RemoveSourceUnmanagedVhds]
    [-AsJob]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Move-VM
    [-CimSession <CimSession[]>]
    [-Name] <String>
    [-DestinationCimSession] <CimSession>
    [-IncludeStorage]
    [-DestinationStoragePath <String>]
    [-ResourcePoolName <String>]
    [-RetainVhdCopiesOnSource]
    [-RemoveSourceUnmanagedVhds]
    [-AsJob]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Move-VM
    [-CimSession <CimSession[]>]
    [-Name] <String>
    [-DestinationCimSession] <CimSession>
    -VirtualMachinePath <String>
    [-SnapshotFilePath <String>]
    [-SmartPagingFilePath <String>]
    [-Vhds <Hashtable[]>]
    [-ResourcePoolName <String>]
    [-RetainVhdCopiesOnSource]
    [-RemoveSourceUnmanagedVhds]
    [-AsJob]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Move-VM
    [-ComputerName <String[]>]
    [-Credential <PSCredential[]>]
    [-Name] <String>
    [-DestinationHost] <String>
    [-DestinationCredential <PSCredential>]
    [-VirtualMachinePath <String>]
    [-SnapshotFilePath <String>]
    [-SmartPagingFilePath <String>]
    [-Vhds <Hashtable[]>]
    [-ResourcePoolName <String>]
    [-RetainVhdCopiesOnSource]
    [-RemoveSourceUnmanagedVhds]
    [-AsJob]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Move-VM
    [-CompatibilityReport] <VMCompatibilityReport>
    [-AsJob]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Move-VM
    [-VM] <VirtualMachine>
    [-DestinationCimSession] <CimSession>
    [-IncludeStorage]
    [-DestinationStoragePath <String>]
    [-ResourcePoolName <String>]
    [-RetainVhdCopiesOnSource]
    [-RemoveSourceUnmanagedVhds]
    [-AsJob]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Move-VM
    [-VM] <VirtualMachine>
    [-DestinationHost] <String>
    [-DestinationCredential <PSCredential>]
    [-IncludeStorage]
    [-DestinationStoragePath <String>]
    [-ResourcePoolName <String>]
    [-RetainVhdCopiesOnSource]
    [-RemoveSourceUnmanagedVhds]
    [-AsJob]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Move-VM
    [-VM] <VirtualMachine>
    [-DestinationHost] <String>
    [-DestinationCredential <PSCredential>]
    [-VirtualMachinePath <String>]
    [-SnapshotFilePath <String>]
    [-SmartPagingFilePath <String>]
    [-Vhds <Hashtable[]>]
    [-ResourcePoolName <String>]
    [-RetainVhdCopiesOnSource]
    [-RemoveSourceUnmanagedVhds]
    [-AsJob]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Move-VM
    [-VM] <VirtualMachine>
    [-DestinationCimSession] <CimSession>
    -VirtualMachinePath <String>
    [-SnapshotFilePath <String>]
    [-SmartPagingFilePath <String>]
    [-Vhds <Hashtable[]>]
    [-ResourcePoolName <String>]
    [-RetainVhdCopiesOnSource]
    [-RemoveSourceUnmanagedVhds]
    [-AsJob]
    [-Passthru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

The Move-VM cmdlet moves a virtual machine to a new Hyper-V host.

Examples

Example 1: Move VM to remote computer

PS C:\> Move-VM -Name "Test VM" -DestinationHost remoteServer

Moves a virtual machine test VM to a remote computer remoteServer when the virtual machine is stored on an SMB share.

Example 2: Move VM and all storage to remote computer

PS C:\> Move-VM -Name "Test VM" -DestinationHost remoteServer -IncludeStorage -DestinationStoragePath D:\TestVM

Moves virtual machine test VM to remote computer remoteServer, and moves all files associated with the virtual machine to D:\TestVM on the remote computer.

Example 3: Move VM and specified storage file to remote computer

PS C:\> Move-VM  -Name "Test VM" -DestinationHost remoteServer -VirtualMachinePath D:\TestVM\Config -SnapshotFilePath D:\TestVM\Snapshots -SmartPagingFilePath D:\TestVM\SmartPaging -IncludeStorage -VHDs @(@{"SourceFilePath" = "C:\TestVM\Disk1.VHDX"; "DestinationFilePath" = "D:\TestVM\Disks\Disk1.VHDX"}, @{"SourceFilePath" = "C:\TestVM\Disk2.VHDX"; "DestinationFilePath" = "D:\TestVM\Disks\Disk2.VHDX"})

Moves a virtual machine Test VM to a remote computer remoteServer and places the files associated with the virtual machine in the specified locations under D:\TestVM on the remote computer.

Parameters

-AsJob

Runs the cmdlet as a background job.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimSession

Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.

Type:CimSession[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CompatibilityReport

Specifies a compatibility report which includes any adjustments required for the move.

Type:VMCompatibilityReport
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ComputerName

Specifies one or more Hyper-V hosts that run this cmdlet. NetBIOS names, IP addresses, and fully qualified ___domain names are allowable. The default is the local computer. Use localhost or a dot (.) to specify the local computer explicitly.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Prompts you for confirmation before running the cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Specifies one or more user accounts that have permission to perform this action. The default is the current user.

Type:PSCredential[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DestinationCimSession

Specifies the CIMSession on the Hyper-V host to which the virtual machine is to be moved.

Type:CimSession
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-DestinationCredential

Specifies a user account that has permission to perform this action. The default is the current user.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DestinationHost

Specifies the Hyper-V host to which the virtual machine is to be moved.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-DestinationStoragePath

Specifies a destination path to which all virtual machine data is to be moved.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeStorage

Specifies that both the virtual machine and its storage are to be moved.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Specifies the friendly name of the virtual machine to be moved.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Passthru

Specifies that an object is to be passed through to be pipeline representing the moved virtual machine.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RemoveSourceUnmanagedVhds

Indicates that Hyper-V deletes the parent virtual hard disk on the source after this cmdlet moves a differencing virtual hard disk, when the migration is finished.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ResourcePoolName

Specifies the name of the processor resource pool to be used.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RetainVhdCopiesOnSource

Indicates that this cmdlet retains parent virtual hard disks on the source computer.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SmartPagingFilePath

Specifies the new path to use for a smart paging file, if one is needed.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SnapshotFilePath

Specifies the path for any snapshot files associated with the virtual machine.

Type:String
Aliases:CheckpointFileLocation, SnapshotFileLocation
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Vhds

Specifies an array of hashtables that contain locations for each individual virtual hard disk to be moved. Each hashtable should have two entries. The first entry specifies the current ___location of the virtual hard disk to move, and has a key of SourceFilePath. The second entry specifies the new ___location for the virtual hard disk, and has a key of DestinationFilePath. The virtual hard disk name must be identical in both entries.

Type:Hashtable[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-VirtualMachinePath

Specifies the path where the virtual machine configuration files are to be stored.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-VM

Specifies the virtual machine to be moved.

Type:VirtualMachine
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet is not run.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Outputs

None

By default, this cmdlet doesn't return any output.

Microsoft.HyperV.PowerShell.VirtualMachine

When you use the PassThru parameter, this cmdlet returns a Microsoft.HyperV.PowerShell.VirtualMachine object if the migration is successful.

Microsoft.HyperV.PowerShell.CompatibilityReport

When you use the PassThru parameter, this cmdlet returns a Microsoft.HyperV.PowerShell.CompatibilityReport object if the migration fails because of an incompatibility.