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.