Partilhar via


Move-SCVirtualMachine

Move uma máquina virtual armazenada na biblioteca do VMM ou implantada em um host para um novo local em um host.

Sintaxe

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

O cmdlet Move-SCVirtualMachine move uma máquina virtual armazenada na biblioteca do Virtual Machine Manager (VMM) ou implantada em um host para um novo local em um host.

No System Center 2019 e posterior, você pode aproveitar os novos recursos de migração incluídos no Windows Server 2016. Esses recursos incluem migração ao vivo de máquinas virtuais entre dois computadores autônomos e migração ao vivo entre computadores autônomos e um nó de cluster. Além disso, há suporte para várias migrações simultâneas ao vivo. Para obter mais informações sobre como migrar máquinas virtuais no System Center, consulte Migrando máquinas virtuais e armazenamento no VMMhttps://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx (https://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx) na Biblioteca TechNet.

Se você mover uma máquina virtual implantada em um host que executa o Windows Server 2008 R2 para um host que executa o Windows Server 2016, não poderá mover a máquina virtual de volta para um host que executa o Windows Server 2008 R2.

O VMM inclui recursos de migração de armazenamento que permitem mover um ou mais discos rígidos virtuais de uma máquina virtual em execução para um local diferente. Você pode usar o cmdlet atual e o cmdlet Move-SCVirtualHardDisk para mover arquivos de disco rígido virtual (.vhd) baseados no Windows e arquivos de disco rígido virtual (.vmdk) baseados em VMware para um local em um host diferente. Você também pode usar o cmdlet Move-SCVirtualHardDisk para mover um arquivo .vhd ou um arquivo .vmdk de um local para outro no mesmo host.

Para mover uma máquina virtual de um host e armazená-la na biblioteca, você deve usar o cmdlet Save-SCVirtualMachine.

O VMM pode usar qualquer um dos seguintes métodos de transferência, listados na ordem em que o VMM tenta usá-los:

  • Hyper-V migração ao vivo. Se uma máquina virtual estiver em execução e for implantada em um host Hyper-V que seja um nó de um cluster de host do Windows Server 2008 R2 ou Windows Server 2016, por padrão, o VMM usará Hyper-V migração ao vivo para mover a máquina virtual para outro nó no cluster sem qualquer interrupção do serviço. Mover uma máquina virtual em execução não a desconecta da rede. A máquina virtual mantém seu atributo de alta disponibilidade. Não é necessário especificar um caminho. Você pode iniciar a migração ao vivo de várias máquinas virtuais ao mesmo tempo.
  • Migração de cluster do Windows Server 2008. O System Center continua a oferecer suporte à Migração de Cluster do Windows 2008, que às vezes é chamada de Migração Rápida. A Migração de Cluster move uma máquina virtual em execução em um nó Hyper-V de um cluster de host. Ele também permite mover uma máquina virtual que está em um estado parado ou salvo e que é implantada em outro nó no cluster. Você pode usar a Migração de Cluster para mover uma máquina virtual em um estado interrompido ou salvo se a máquina virtual for implantada em um dos seguintes nós:

----Um nó em um cluster do Windows Server 2008 ----Um nó em um cluster do Windows Server 2008 R2

Não é necessário especificar um caminho. A Migração de Cluster do Windows Server 2008 coloca a máquina virtual em um estado salvo durante a migração. Essa operação causa uma perda temporária de serviço para todos os usuários dessa máquina virtual.

  • Migração ao vivo do VMware. Se uma máquina virtual implantada em um host VMware ESX usar armazenamento compartilhado, o VMM poderá usar o recurso de migração ao vivo do VMware para mover a máquina virtual para um novo host. Esse recurso é chamado VMware VMotion. Não é necessário especificar um caminho. O cmdlet atual pode usar o VMware VMotion para mover uma máquina virtual de um host ESX para outro somente se ambos os hosts ESX estiverem no mesmo contêiner Datacenter no vCenter Server.
  • Citrix XenServer XenMotion. Se uma máquina virtual implantada em um host Citrix XenServer usar armazenamento compartilhado e fizer parte do mesmo Pool de Recursos, o VMM poderá usar o recurso de migração ao vivo do XenServer para mover a máquina virtual para um host XenServer diferente. O recurso de migração ao vivo é chamado de Citrix XenMotion.
  • Migração de SAN (Fibre Channel, iSCSI ou NPIV). Se a máquina virtual estiver em um host conectado a uma SAN e a máquina virtual estiver em um LUN SAN, o VMM poderá mover essa máquina virtual para outro host se esse host tiver acesso à mesma SAN. Em uma transferência de SAN, os LUNs de destino são redirecionados do host de origem para o host de destino. Esta migração não move ficheiros. Uma transferência de SAN é muito mais rápida do que mover arquivos de máquina virtual de um host para outro através de uma rede local (LAN). O VMM oferece suporte à migração SAN de máquinas virtuais para dentro e para fora de um cluster. Você deve especificar um caminho. O VMM pode usar uma transferência de SAN NPIV se um adaptador de barramento de host (HBA) com suporte a NPIV estiver disponível.
  • Migração de rede. Se nenhum método mais rápido estiver disponível, o VMM usa uma transferência de rede para mover os arquivos da máquina virtual de um host para outro pela LAN que conecta os dois hosts. Você pode decidir usar esse tipo de transferência mesmo se o tipo de transferência SAN estiver disponível. Você deve especificar um caminho.

Quando mais de um tipo de transferência está disponível, esse cmdlet usa automaticamente o tipo de transferência mais rápido disponível para mover uma máquina virtual. Se um método não for apropriado ou não estiver disponível para a máquina virtual que você deseja mover, o VMM tentará usar o próximo método na lista. Se você quiser forçar o uso de uma transferência de rede, especifique o parâmetro UseLAN.

Exemplos

Exemplo 1: Mover uma máquina virtual da biblioteca para um 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"

O primeiro comando obtém o objeto de máquina virtual chamado VM01 e, em seguida, armazena esse objeto na variável $VM. Neste exemplo, a máquina virtual armazenada na biblioteca do VMM no servidor de biblioteca chamado LibServer01. Este exemplo pressupõe que apenas uma máquina virtual chamada VM01 está atualmente armazenada em LibServer01.

O segundo comando obtém o objeto host chamado VMHost01 e, em seguida, armazena esse objeto na variável $VMHost.

O último comando move a máquina virtual de seu local atual na biblioteca para o local D:\VirtualMachinePath no host armazenado no $VMHost. O comando usa automaticamente o tipo de transferência mais rápido disponível. Quando o comando termina, ele retorna informações sobre a máquina virtual movida.

Exemplo 2: Mover uma máquina virtual da biblioteca para um host de forma assíncrona

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

Os dois primeiros comandos neste exemplo são idênticos aos comandos no primeiro exemplo, exceto para o nome do host da máquina virtual.

O terceiro comando move a máquina virtual de seu local atual para D:\VirtualMachinePath no VMHost02. O comando especifica o parâmetro RunAsynchronously para retornar o controle ao shell de comando imediatamente. O comando especifica o parâmetro JobVariable para acompanhar o progresso do trabalho. O comando armazena um registro do progresso do trabalho na variável $MoveVMJob. Para o parâmetro JobVariable, você não especifica o cifrão ($) para criar a variável.

O último comando exibe o conteúdo de $MoveVMJob, que inclui uma descrição do trabalho de mudança, seu status, seu progresso e outras informações.

Exemplo 3: Mover uma máquina virtual da biblioteca para um host forçando uma transferência de 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

O primeiro comando obtém o objeto de máquina virtual chamado VM03 no servidor de biblioteca LibServer01 e, em seguida, armazena esse objeto na variável $VM.

O segundo comando obtém o objeto host chamado VMHost03 e, em seguida, armazena esse objeto na variável $VMHost.

O último comando move a máquina virtual VM03 de seu local atual na biblioteca para D:\VirtualMachinePath no VMHost03. O comando especifica o parâmetro UseLAN para especificar que a transferência use uma transferência de rede, mesmo que mecanismos de transferência mais rápidos estejam disponíveis.

Exemplo 4: Mover uma máquina virtual entre hosts usando o 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]"

O primeiro comando obtém o objeto de máquina virtual chamado VM04 em ESXHost01 e, em seguida, armazena esse objeto na variável $VM.

O segundo comando obtém o objeto host ESX chamado ESXHost02 e, em seguida, armazena esse objeto na variável $VMHost.

O comando final usa o VMware VMotion para mover a máquina virtual de seu host ESX atual para o outro host ESX.

NOTA: O cmdlet Move-SCVirtualMachine pode usar o recurso VMware VMotion para mover uma máquina virtual de um host ESX para outro somente se ambos os servidores ESX estiverem no mesmo contêiner Datacenter no vCenter Server.

Exemplo 5: Mover uma máquina virtual altamente disponível entre nós em um cluster de host usando Hyper-V migração ao vivo

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\"

O primeiro comando obtém o objeto de máquina virtual chamado HAVM05 em VMHVHostNode05A e, em seguida, armazena esse objeto na variável $VM. Neste exemplo, HAVM05 é uma máquina virtual altamente disponível. VMHVHostNode05A e VMHVHostNode05B são nós em um cluster de host Hyper-V.

O segundo comando obtém o objeto host chamado VMHVHostNode05B e, em seguida, armazena esse objeto na variável $VMHost.

O comando final usa a migração ao vivo para mover a máquina virtual de VMHVHostNode05A para VMHVHostNode05B.

Exemplo 6: Mover uma máquina virtual em execução em um host Hyper-V para um novo local no mesmo 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

O primeiro comando armazena a cadeia de caracteres E:\VHDs no $MoveVhdPath. Este é o caminho do qual mover o disco rígido virtual da máquina virtual.

O segundo comando obtém o objeto de máquina virtual chamado VM06 e, em seguida, armazena esse objeto a variável $VM.

O terceiro comando obtém o objeto host chamado VMHost06 e, em seguida, armazena esse objeto na variável $VMHost. Neste exemplo, VMHost06 é um host Hyper-V.

O quarto comando armazena a cadeia de caracteres E:\VirtualMachinePath na variável $HostPath. Este é o caminho do qual mover o VM06.

O quinto comando cria uma nova cadeia de caracteres GUID e a armazena na variável $JobGroupID. Esse GUID é um ID de grupo de trabalho que funciona como um identificador que agrupa comandos subsequentes que incluem esse identificador em um único grupo de trabalhos.

O sexto comando define o caminho do disco rígido virtual do valor armazenado no $MoveVhdPath e conecta o disco rígido virtual ao Barramento 1 e ao LUN 1 no controlador IDE virtual na máquina virtual. Este comando especifica o parâmetro JobGroup para que ele não seja realmente executado até que Move-SCVirtualMachine acione a execução de quaisquer comandos na lista de grupos de trabalhos.

O último comando move VM06 para E:\VirtualMachinePath no mesmo host. O cmdlet é executado Move-SCVirtualHardDisk como parte do $JobGroupID. O comando move o disco rígido virtual da máquina virtual para E:\VHDs.

Parâmetros

-BlockLiveMigrationIfHostBusy

Indica que o cmdlet bloqueia a repetição de uma migração ao vivo Hyper-V se a migração falhar porque o host de origem ou o host de destino já está participando de outra migração ao vivo.

Tipo:SwitchParameter
Aliases:BlockLMIfHostBusy
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-DiscardSavedState

Indica que esse cmdlet exclui o estado salvo associado a uma máquina virtual ou serviço.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-HighlyAvailable

Especifica se uma máquina virtual deve ser colocada em um host Hyper-V que faz parte de um cluster de host.

Tipo:Boolean
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-JobGroup

Especifica um identificador para uma série de comandos que é executado como um conjunto imediatamente antes da execução do comando final que inclui o mesmo identificador de grupo de trabalhos.

Tipo:Guid
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-JobVariable

Especifica o nome de uma variável para o progresso do trabalho.

Tipo:String
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-OnBehalfOfUser

Especifica um nome de usuário. Este cmdlet opera em nome do usuário especificado por esse parâmetro.

Tipo:String
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-OnBehalfOfUserRole

Especifica uma função de usuário. Para obter uma função de usuário, use o cmdlet Get-SCUserRole. Este cmdlet opera em nome da função de usuário especificada por esse parâmetro.

Tipo:UserRole
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-Path

Especifica o caminho da máquina virtual movida.

Tipo:String
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-PROTipID

Especifica a ID da dica de Otimização de Desempenho e Recursos (dica PRO) que disparou essa ação. Este parâmetro permite auditar dicas PRO.

Tipo:Guid
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-ReplicationGroup

Especifica um grupo de replicação.

Tipo:ReplicationGroup
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-RunAsynchronously

Indica que o trabalho é executado de forma assíncrona para que o controle retorne ao shell de comando imediatamente.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-StartVMOnTarget

Especifica que uma máquina virtual é iniciada assim que esse cmdlet a move para seu host de destino.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-UseCluster

Indica que esse cmdlet usa a Migração de Cluster para a transferência de uma máquina virtual que está em um estado salvo para um host, mesmo que o cluster ofereça suporte a Hyper-V migração ao vivo.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-UseDiffDiskOptimization

Indica que o cmdlet usa otimização de disco diferencial.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-UseLAN

Indica que esse cmdlet usa a transferência pela LAN mesmo que um mecanismo de transferência mais rápido esteja disponível.

Tipo:SwitchParameter
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-VM

Especifica um objeto de máquina virtual.

Tipo:VM
Position:0
Default value:None
Necessário:True
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

-VMHost

Especifica um objeto de host de máquina virtual. O VMM suporta hosts Hyper-V, VMware ESX e Citrix XenServer.

Para obter mais informações sobre cada tipo de host, consulte o cmdlet Add-SCVMHost.

Tipo:Host
Position:Named
Default value:None
Necessário:False
Aceitar entrada de pipeline:True
Aceitar carateres universais:False

Saídas

VirtualMachine

Este cmdlet retorna um objeto VirtualMachine.