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 y versiones posteriores, 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, 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 le 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 forme 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 ejecuta 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 de optimización de recursos y rendimiento (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 la 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 .