Move-SCVirtualMachine
Mueve una máquina virtual almacenada en la biblioteca VMM o implementada en un host a una nueva ubicación en un host.
Syntax
Move-SCVirtualMachine
[-VM] <VM>
[-VMHost <Host>]
[-ReplicationGroup <ReplicationGroup>]
[-BlockLiveMigrationIfHostBusy]
[-UseDiffDiskOptimization]
[-StartVMOnTarget]
[-DiscardSavedState]
[-UseLAN]
[-UseCluster]
[-HighlyAvailable <Boolean>]
[-Path <String>]
[-JobGroup <Guid>]
[-RunAsynchronously]
[-PROTipID <Guid>]
[-JobVariable <String>]
[-OnBehalfOfUser <String>]
[-OnBehalfOfUserRole <UserRole>]
[<CommonParameters>]
Description
El cmdlet Move-SCVirtualMachine mueve una máquina virtual almacenada en la biblioteca de Virtual Machine Manager (VMM) o se implementa en un host en una nueva ubicación en un host.
En System Center 2019, puede aprovechar las nuevas funcionalidades de migración incluidas en Windows Server 2016. Estas funcionalidades incluyen la migración en vivo de máquinas virtuales entre dos equipos independientes y la migración en vivo entre equipos independientes y un nodo de clúster. Además, se admiten varias migraciones en vivo simultáneas. Para obtener más información sobre cómo migrar máquinas virtuales en System Center 2019, consulte Migración de Virtual Machines y almacenamiento en VMMhttps://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx (https://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx) en la biblioteca de TechNet.
Si mueve una máquina virtual implementada en un host que ejecuta Windows Server 2008 R2 a un host que ejecuta Windows Server 2016, no puede volver a mover la máquina virtual a un host que ejecuta Windows Server 2008 R2.
VMM incluye características de migración de almacenamiento que permiten mover uno o varios discos duros virtuales de una máquina virtual en ejecución a otra ubicación. Puede usar el cmdlet actual y el cmdlet Move-SCVirtualHardDisk para mover archivos de disco duro virtual (.vhd) basados en Windows y archivos de disco duro virtual basado en VMware (.vmdk) a una ubicación en un host diferente. También puede usar el cmdlet Move-SCVirtualHardDisk para mover un archivo .vhd o un archivo .vmdk de una ubicación a otra en el mismo host.
Para mover una máquina virtual desde un host y almacenarla en la biblioteca, debe usar el cmdlet Save-SCVirtualMachine.
VMM puede usar cualquiera de los métodos de transferencia siguientes, enumerados en el orden en que VMM intenta usarlos:
- Migración en vivo de Hyper-V. Si una máquina virtual se ejecuta y se implementa en un host de Hyper-V que es un nodo de un clúster de hosts de Windows Server 2008 R2 o Windows Server 2016, de forma predeterminada, VMM usa la migración en vivo de Hyper-V para mover la máquina virtual a otro nodo del clúster sin ninguna interrupción del servicio. Mover una máquina virtual en ejecución no la desconecta de la red. La máquina virtual conserva su atributo de alta disponibilidad. No es necesario especificar una ruta de acceso. Puede iniciar la migración en vivo de varias máquinas virtuales al mismo tiempo.
- Migración de clústeres de Windows Server 2008. System Center sigue admitiendo la migración de clústeres de Windows 2008, que a veces se denomina Migración rápida. La migración de clústeres mueve una máquina virtual en ejecución en un nodo de Hyper-V de un clúster de hosts. También permite mover una máquina virtual que se encuentra en un estado detenido o guardado, y que se implementa en otro nodo del clúster. Puede usar la migración de clústeres para mover una máquina virtual en un estado detenido o guardado si la máquina virtual se implementa en cualquiera de los nodos siguientes:
----A nodo de un clúster de Windows Server 2008 ----A en un clúster de Windows Server 2008 R2
No es necesario especificar una ruta de acceso. La migración de clústeres de Windows Server 2008 coloca la máquina virtual en un estado guardado durante la migración. Esta operación produce una pérdida temporal del servicio a los usuarios de esa máquina virtual.
- Migración en vivo de VMware. Si una máquina virtual implementada en un host de VMware ESX usa almacenamiento compartido, VMM puede usar la característica de migración en vivo de VMware para mover la máquina virtual a un nuevo host. Esta característica se denomina VMware VMotion. No es necesario especificar una ruta de acceso. El cmdlet actual puede usar VMware VMotion para mover una máquina virtual de un host ESX a otro solo si ambos hosts ESX están en el mismo contenedor de Centro de datos en vCenter Server.
- Citrix XenServer XenMotion. Si una máquina virtual implementada en un host de Citrix XenServer usa almacenamiento compartido y forma parte del mismo grupo de recursos, VMM puede usar la característica de migración en vivo de XenServer para mover la máquina virtual a otro host de XenServer. La característica de migración en vivo se denomina Citrix XenMotion.
- Migración de SAN (Canal de fibra, iSCSI o NPIV). Si la máquina virtual está en un host que está conectado a una SAN y la máquina virtual está en un LUN san, VMM puede mover esa máquina virtual a otro host si ese host tiene acceso a la misma SAN. En una transferencia SAN, los LUN de destino se redirigen desde el host de origen al host de destino. Esta migración no mueve archivos. Una transferencia SAN es mucho más rápida que mover archivos de máquina virtual de un host a otro a través de una red de área local (LAN). VMM admite la migración san de máquinas virtuales dentro y fuera de un clúster. Debe especificar una ruta de acceso. VMM puede usar una transferencia SAN NPIV si el adaptador de bus host (HBA) compatible con NPIV está disponible.
- Migración de red. Si no hay ningún método más rápido disponible, VMM usa una transferencia de red para mover los archivos de máquina virtual de un host a otro a través de la LAN que conecta los dos hosts. Puede decidir usar este tipo de transferencia incluso si el tipo de transferencia SAN está disponible. Debe especificar una ruta de acceso.
Cuando hay más de un tipo de transferencia disponible, este cmdlet usa automáticamente el tipo de transferencia más rápido disponible para mover una máquina virtual. Si un método no es adecuado o está disponible para la máquina virtual que desea mover, VMM intenta usar el método siguiente de la lista. Si desea forzar el uso de una transferencia de red, especifique el parámetro UseLAN .
Ejemplos
Ejemplo 1: Traslado de una máquina virtual de la biblioteca a un host
PS C:\> $VM = Get-SCVirtualMachine | Where-Object { $_.Name -Eq "VM01" -And $_.LibraryServer -Eq "LibServer01.Contoso.com" }
PS C:\> $VMHost = Get-SCVMHost -ComputerName "VMHost01.Contoso.com"
PS C:\> Move-SCVirtualMachine -VMHost $VMHost -VM $VM -Path "D:\VirtualMachinePath"
El primer comando obtiene el objeto de máquina virtual denominado VM01 y, a continuación, almacena ese objeto en la variable $VM. En este ejemplo, la máquina virtual almacenada en la biblioteca VMM en el servidor de biblioteca denominado LibServer01. En este ejemplo se supone que solo hay una máquina virtual denominada VM01 almacenada actualmente en LibServer01.
El segundo comando obtiene el objeto host denominado VMHost01 y, a continuación, almacena ese objeto en la variable $VMHost.
El último comando mueve la máquina virtual desde su ubicación actual de la biblioteca a la ubicación D:\VirtualMachinePath en el host almacenado en $VMHost. El comando usa automáticamente el tipo de transferencia más rápido que está disponible. Cuando finaliza el comando, devuelve información sobre la máquina virtual movida.
Ejemplo 2: Traslado de una máquina virtual de la biblioteca a un host de forma asincrónica
PS C:\> $VM = Get-SCVirtualMachine | Where-Object { $_.Name -Eq "VM01" -And $_.LibraryServer -Eq "LibServer01.Contoso.com" }
PS C:\> $VMHost = Get-SCVMHost -ComputerName "VMHost02.Contoso.com"
PS C:\> Move-SCVirtualMachine -VMHost $VMHost -VM $VM -Path "D:\VirtualMachinePath" -RunAsynchronously -JobVariable "MoveVMJob"
PS C:\> $MoveVMJob
Los dos primeros comandos de este ejemplo son idénticos a los comandos del primer ejemplo, excepto el nombre del host de máquina virtual.
El tercer comando mueve la máquina virtual de su ubicación actual a D:\VirtualMachinePath en VMHost02. El comando especifica el parámetro RunAsynchronously para devolver el control al shell de comandos inmediatamente. El comando especifica el parámetro JobVariable para realizar un seguimiento del progreso del trabajo. El comando almacena un registro del progreso del trabajo en la variable $MoveVMJob. Para el parámetro JobVariable , no se especifica el signo de dólar ($) para crear la variable.
El último comando muestra el contenido de $MoveVMJob, que incluye una descripción del trabajo de movimiento, su estado, su progreso y otra información.
Ejemplo 3: Mover una máquina virtual de la biblioteca a un host al forzar una transferencia LAN
PS C:\> $VM = Get-SCVirtualMachine | Where-Object { $_.Name -Eq "VM03" -And $_.LibraryServer -Eq "LibServer01.Contoso.com" }
PS C:\> $VMHost = Get-SCVMHost -ComputerName "VMHost03.Contoso.com"
PS C:\> Move-SCVirtualMachine -VMHost $VMHost -VM $VM -Path "D:\VirtualMachinePath" -UseLAN
El primer comando obtiene el objeto de máquina virtual denominado VM03 en el servidor de biblioteca LibServer01 y, a continuación, almacena ese objeto en la variable $VM.
El segundo comando obtiene el objeto host denominado VMHost03 y, a continuación, almacena ese objeto en la variable $VMHost.
El último comando mueve la máquina virtual VM03 desde su ubicación actual en la biblioteca a D:\VirtualMachinePath en VMHost03. El comando especifica el parámetro UseLAN para especificar que la transferencia use una transferencia de red, incluso si hay mecanismos de transferencia más rápidos disponibles.
Ejemplo 4: Traslado de una máquina virtual entre hosts mediante VMware VMotion
PS C:\> $VM = Get-SCVirtualMachine -Name "VM04" | Where-Object {$_.VMHost.Name -Eq "ESXHost01"}
PS C:\> $VMHost = Get-SCVMHost | Where-Object {$_.Name -Eq "ESXHost02"}
PS C:\> Move-SCVirtualMachine -VM $VM -VMHost $VMHost -Path "[Storage2]"
El primer comando obtiene el objeto de máquina virtual denominado VM04 en ESXHost01 y, a continuación, almacena ese objeto en la variable $VM.
El segundo comando obtiene el objeto host ESX denominado ESXHost02 y, a continuación, almacena ese objeto en la variable $VMHost.
El comando final usa VMware VMotion para mover la máquina virtual de su host ESX actual al otro host ESX.
NOTA: El cmdlet Move-SCVirtualMachine puede usar la característica VMware VMotion para mover una máquina virtual de un host ESX a otro solo si ambos servidores ESX están en el mismo contenedor de Centro de datos en vCenter Server.
Ejemplo 5: Traslado de una máquina virtual de alta disponibilidad entre nodos de un clúster host mediante la migración en vivo de Hyper-V
PS C:\> $VM = Get-SCVirtualMachine -Name "HAVM05" | Where-Object {$_.VMHost.Name -Eq "VMHVHostNode05A.Contoso.com"}
PS C:\> $VMHost = Get-SCVMHost | Where-Object {$_.Name -Eq "VMHVHostNode05B.Contoso.com"}
PS C:\> Move-SCVirtualMachine -VM $VM -VMHost $VMHost -Path "D:\VMs\"
El primer comando obtiene el objeto de máquina virtual denominado HAVM05 en VMHVHostNode05A y, a continuación, almacena ese objeto en la variable $VM. En este ejemplo, HAVM05 es una máquina virtual de alta disponibilidad. VMHVHostNode05A y VMHVHostNode05B son nodos en un clúster de hosts de Hyper-V.
El segundo comando obtiene el objeto host denominado VMHVHostNode05B y, a continuación, almacena ese objeto en la variable $VMHost.
El comando final usa la migración en vivo para mover la máquina virtual de VMHVHostNode05A a VMHVHostNode05B.
Ejemplo 6: Traslado de una máquina virtual en ejecución en un host de Hyper-V a una nueva ubicación en el mismo host
PS C:\> $MoveVhdPath = "E:\VHDs"
PS C:\> $VM = Get-SCVirtualMachine "VM06"
PS C:\> $VMHost = Get-SCVMHost "VMHost06"
PS C:\> $HostPath = "E:\VirtualMachinePath"
PS C:\> $JobGroupID = [System.Guid]::NewGuid().ToString()
PS C:\> Move-SCVirtualHardDisk -IDE -Bus 1 -Lun 1 -Path $MoveVhdPath -JobGroup $JobGroupID
PS C:\> Move-SCVirtualMachine -VM $VM -VMHost $VMHost -Path $HostPath -JobGroup $JobGroupID
El primer comando almacena la cadena E:\VHD en $MoveVhdPath. Esta es la ruta de acceso de la que se va a mover el disco duro virtual de la máquina virtual.
El segundo comando obtiene el objeto de máquina virtual denominado VM06 y, a continuación, almacena ese objeto en la variable $VM.
El tercer comando obtiene el objeto host denominado VMHost06 y, a continuación, almacena ese objeto en la variable $VMHost. En este ejemplo, VMHost06 es un host de Hyper-V.
El cuarto comando almacena la cadena E:\VirtualMachinePath en la variable $HostPath. Esta es la ruta de acceso de la que se va a mover VM06.
El quinto comando crea una nueva cadena GUID y la almacena en la variable $JobGroupID. Este GUID es un identificador de grupo de trabajos que funciona como un identificador que agrupa los comandos subsiguientes que incluyen este identificador en un solo grupo de trabajos.
El sexto comando establece la ruta de acceso del disco duro virtual del valor almacenado en $MoveVhdPath y conecta el disco duro virtual a Bus 1 y LUN 1 en el controlador IDE virtual de la máquina virtual. Este comando especifica el parámetro JobGroup para que no se ejecute realmente hasta que Move-SCVirtualMachine desencadene la ejecución de cualquier comando de la lista de grupos de trabajos.
El último comando mueve VM06 a E:\VirtualMachinePath en el mismo host. El cmdlet ejecuta Move-SCVirtualHardDisk como parte de $JobGroupID. El comando mueve el disco duro virtual de la máquina virtual a E:\VHD.
Parámetros
-BlockLiveMigrationIfHostBusy
Indica que el cmdlet bloquea el reintento de una migración en vivo de Hyper-V si se produjo un error en la migración porque el host de origen o el host de destino ya participan en otra migración en vivo.
Type: | SwitchParameter |
Aliases: | BlockLMIfHostBusy |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DiscardSavedState
Indica que este cmdlet elimina el estado guardado asociado a una máquina virtual o servicio.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HighlyAvailable
Especifica si se va a colocar una máquina virtual en un host de Hyper-V que forma parte de un clúster de hosts.
Type: | Boolean |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-JobGroup
Especifica un identificador para una serie de comandos que se ejecutan como un conjunto justo antes de que se ejecute el mismo identificador de grupo de trabajos.
Type: | Guid |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-JobVariable
Especifica el nombre de una variable para el progreso del trabajo.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OnBehalfOfUser
Especifica un nombre de usuario. Este cmdlet funciona en nombre del usuario que especifica este parámetro.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OnBehalfOfUserRole
Especifica un rol de usuario. Para obtener un rol de usuario, use el cmdlet Get-SCUserRole . Este cmdlet funciona en nombre del rol de usuario que especifica este parámetro.
Type: | UserRole |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Especifica la ruta de acceso de la máquina virtual movida.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PROTipID
Especifica el identificador de la sugerencia rendimiento y optimización de recursos (sugerencia PRO) que desencadenó esta acción. Este parámetro le permite auditar sugerencias PRO.
Type: | Guid |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ReplicationGroup
Especifica un grupo de replicación.
Type: | ReplicationGroup |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RunAsynchronously
Indica que el trabajo se ejecuta de forma asincrónica para que el control vuelva al shell de comandos inmediatamente.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-StartVMOnTarget
Especifica que una máquina virtual se inicia en cuanto este cmdlet lo mueve al host de destino.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseCluster
Indica que este cmdlet usa la migración de clústeres para la transferencia de una máquina virtual que está en un estado guardado en un host, incluso si el clúster admite la migración en vivo de Hyper-V.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseDiffDiskOptimization
Indica que el cmdlet usa la optimización de disco de diferenciación.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseLAN
Indica que este cmdlet usa la transferencia a través de la LAN incluso si hay disponible un mecanismo de transferencia más rápido.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-VM
Especifica un objeto de máquina virtual.
Type: | VM |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-VMHost
Especifica un objeto host de máquina virtual. VMM admite hosts de Hyper-V, hosts de VMware ESX y hosts de Citrix XenServer.
Para obtener más información sobre cada tipo de host, consulte el cmdlet Add-SCVMHost .
Type: | Host |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Salidas
VirtualMachine
Este cmdlet devuelve un objeto VirtualMachine .
Vínculos relacionados
- Add-SCVMHost
- Get-SCUserRole
- Get-SCVirtualMachine
- Get-SCVMHost
- Move-SCVirtualHardDisk
- New-SCVirtualMachine
- Read-SCVirtualMachine
- Register-SCVirtualMachine
- Repair-SCVirtualMachine
- Reset-SCVirtualMachine
- Resume-SCVirtualMachine
- Save-SCVirtualMachine
- Set-SCVirtualMachine
- Start-SCVirtualMachine
- Suspend-SCVirtualMachine
- Stop-SCVirtualMachine