Partilhar via


Move-SCVirtualMachine

Move uma máquina virtual armazenada na biblioteca do VMM ou implementada num anfitrião para uma nova localização num anfitrião.

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

O cmdlet Move-SCVirtualMachine move uma máquina virtual armazenada na biblioteca do Virtual Machine Manager (VMM) ou implementada num anfitrião para uma nova localização num anfitrião.

No System Center 2019 e posterior, pode tirar partido das novas funcionalidades de migração incluídas no Windows Server 2016. Estas capacidades incluem a migração em direto de máquinas virtuais entre dois computadores autónomos e a migração em direto entre computadores autónomos e um nó de cluster. Além disso, são suportadas várias migrações em direto simultâneas. Para obter mais informações sobre como migrar máquinas virtuais no System Center, veja Migrar 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 mover uma máquina virtual implementada num anfitrião com o Windows Server 2008 R2 para um anfitrião com Windows Server 2016, não poderá mover a máquina virtual de volta para um anfitrião com o Windows Server 2008 R2.

O VMM inclui funcionalidades de migração de armazenamento que lhe permitem mover um ou mais discos rígidos virtuais de uma máquina virtual em execução para uma localização diferente. Pode utilizar o cmdlet atual e o cmdlet Move-SCVirtualHardDisk para mover ficheiros de disco rígido virtual (.vhd) baseados no Windows e ficheiros de disco rígido virtual (.vmdk) baseados em VMware para uma localização num anfitrião diferente. Também pode utilizar o cmdlet Move-SCVirtualHardDisk para mover um ficheiro .vhd ou um ficheiro .vmdk de uma localização para outra no mesmo anfitrião.

Para mover uma máquina virtual de um anfitrião e armazená-la na biblioteca, tem de utilizar o cmdlet Save-SCVirtualMachine.

O VMM pode utilizar qualquer um dos seguintes métodos de transferência, listados pela ordem pela qual o VMM tenta utilizá-los:

  • Migração em direto do Hyper-V. Se uma máquina virtual estiver em execução e estiver implementada num anfitrião Hyper-V que seja um nó de um cluster anfitrião do Windows Server 2008 R2 ou Windows Server 2016, por predefinição, o VMM utiliza a migração em direto do Hyper-V 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 desliga da rede. A máquina virtual mantém o atributo de elevada disponibilidade. Não tem de especificar um caminho. Pode iniciar a migração em direto de várias máquinas virtuais ao mesmo tempo.
  • Migração de Clusters do Windows Server 2008. O System Center continua a suportar a Migração de Clusters do Windows 2008, que por vezes é denominada Migração Rápida. A Migração de Clusters move uma máquina virtual em execução num nó Hyper-V de um cluster anfitrião. Também lhe permite mover uma máquina virtual que está num estado parado ou guardado e que é implementada noutro nó no cluster. Pode utilizar a Migração de Clusters para mover uma máquina virtual num estado parado ou guardado se a máquina virtual estiver implementada em qualquer um dos seguintes nós:

----A nó num cluster do Windows Server 2008 ----A nó num cluster do Windows Server 2008 R2

Não tem de especificar um caminho. A Migração de Clusters do Windows Server 2008 coloca a máquina virtual num estado guardado durante a migração. Esta operação causa uma perda temporária de serviço para todos os utilizadores dessa máquina virtual.

  • Migração em direto do VMware. Se uma máquina virtual implementada num anfitrião VMware ESX utilizar armazenamento partilhado, o VMM pode utilizar a funcionalidade de migração em direto do VMware para mover a máquina virtual para um novo anfitrião. Esta funcionalidade chama-se VMware VMotion. Não tem de especificar um caminho. O cmdlet atual pode utilizar o VMware VMotion para mover uma máquina virtual de um anfitrião ESX para outro apenas se ambos os anfitriões ESX estiverem no mesmo contentor do Datacenter no vCenter Server.
  • Citrix XenServer XenMotion. Se uma máquina virtual implementada num anfitrião Citrix XenServer utilizar armazenamento partilhado e fizer parte do mesmo Agrupamento de Recursos, o VMM pode utilizar a funcionalidade de migração em direto XenServer para mover a máquina virtual para um anfitrião XenServer diferente. A funcionalidade de migração em direto chama-se Citrix XenMotion.
  • Migração san (Canal de Fibra, iSCSI ou NPIV). Se a máquina virtual estiver num anfitrião ligado a uma SAN e a máquina virtual estiver num LUN SAN, o VMM poderá mover essa máquina virtual para outro anfitrião se esse anfitrião tiver acesso à mesma SAN. Numa transferência SAN, os LUNs de destino são redirecionados do anfitrião de origem para o anfitrião de destino. Esta migração não move ficheiros. Uma transferência SAN é muito mais rápida do que mover ficheiros de máquina virtual de um anfitrião para outro através de uma rede de área local (LAN). O VMM suporta a migração SAN de máquinas virtuais para dentro e fora de um cluster. Tem de especificar um caminho. O VMM pode utilizar uma transferência SAN NPIV se estiver disponível um adaptador de barramento anfitrião (HBA) com suporte NPIV.
  • Migração de Rede. Se não estiver disponível um método mais rápido, o VMM utiliza uma transferência de rede para mover os ficheiros da máquina virtual de um anfitrião para outro através da LAN que liga os dois anfitriões. Pode optar por utilizar este tipo de transferência mesmo que o tipo de transferência SAN esteja disponível. Tem de especificar um caminho.

Quando está disponível mais do que um tipo de transferência, este cmdlet utiliza automaticamente o tipo de transferência disponível mais rápido para mover uma máquina virtual. Se um método não for adequado ou estiver disponível para a máquina virtual que pretende mover, o VMM tentará utilizar o método seguinte na lista. Se quiser forçar a utilização de uma transferência de rede, especifique o parâmetro UseLAN .

Exemplos

Exemplo 1: mover uma máquina virtual da biblioteca para um anfitrião

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 de comando obtém o objeto de máquina virtual com o nome 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 bibliotecas denominada LibServer01. Este exemplo pressupõe que apenas uma máquina virtual com o nome VM01 está atualmente armazenada no LibServer01.

O segundo comando obtém o objeto anfitrião com o nome VMHost01 e, em seguida, armazena esse objeto na variável $VMHost.

O último comando move a máquina virtual da localização atual na biblioteca para a localização D:\VirtualMachinePath no anfitrião armazenado no $VMHost. O comando utiliza automaticamente o tipo de transferência disponível mais rápido. Quando o comando for concluído, devolve informações sobre a máquina virtual movida.

Exemplo 2: mover uma máquina virtual da biblioteca para um anfitrião 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 o nome do anfitrião da máquina virtual.

O terceiro comando move a máquina virtual da localização atual para D:\VirtualMachinePath no VMHost02. O comando especifica o parâmetro RunAsynchronously para devolver imediatamente o controlo à shell de comandos. O comando especifica o parâmetro JobVariable para controlar o progresso da tarefa. O comando armazena um registo do progresso da tarefa na variável $MoveVMJob. Para o parâmetro JobVariable , não especifique o cifrão ($) para criar a variável.

O último comando apresenta o conteúdo de $MoveVMJob, que inclui uma descrição da tarefa de movimentação, o respetivo estado, o respetivo progresso e outras informações.

Exemplo 3: mover uma máquina virtual da biblioteca para um anfitrião ao forçar uma transferência 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 com o nome VM03 no servidor de bibliotecas LibServer01 e, em seguida, armazena esse objeto na variável $VM.

O segundo comando obtém o objeto anfitrião com o nome VMHost03 e, em seguida, armazena esse objeto na variável $VMHost.

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

Exemplo 4: Mover uma máquina virtual entre anfitriões com 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 com o nome VM04 no ESXHost01 e, em seguida, armazena esse objeto na variável $VM.

O segundo comando obtém o objeto anfitrião ESX com o nome ESXHost02 e, em seguida, armazena esse objeto na variável $VMHost.

O comando final utiliza o VMware VMotion para mover a máquina virtual do anfitrião ESX atual para o outro anfitrião ESX.

NOTA: o cmdlet Move-SCVirtualMachine pode utilizar a funcionalidade VMware VMotion para mover uma máquina virtual de um anfitrião ESX para outro apenas se ambos os servidores ESX estiverem no mesmo contentor do Datacenter no vCenter Server.

Exemplo 5: Mover uma máquina virtual de elevada disponibilidade entre nós num cluster anfitrião através da migração em direto do 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\"

O primeiro comando obtém o objeto de máquina virtual com o nome HAVM05 na VMHVHostNode05A e, em seguida, armazena esse objeto na variável $VM. Neste exemplo, HAVM05 é uma máquina virtual de elevada disponibilidade. VMHVHostNode05A e VMHVHostNode05B são nós num cluster anfitrião Hyper-V.

O segundo comando obtém o objeto anfitrião com o nome VMHVHostNode05B e, em seguida, armazena esse objeto na variável $VMHost.

O comando final utiliza a migração em direto para mover a máquina virtual de VMHVHostNode05A para VMHVHostNode05B.

Exemplo 6: mover uma máquina virtual em execução num anfitrião Hyper-V para uma nova localização no mesmo anfitrião

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 E:\VHDs no $MoveVhdPath. Este é o caminho para mover o disco rígido virtual da máquina virtual.

O segundo comando obtém o objeto da máquina virtual com o nome VM06 e, em seguida, armazena esse objeto $VM variável.

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

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

O quinto comando cria uma nova cadeia GUID e armazena-a na variável $JobGroupID. Este GUID é um ID de grupo de tarefas que funciona como um identificador que agrupa comandos subsequentes que incluem este identificador num único grupo de tarefas.

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

O último comando move a VM06 para E:\VirtualMachinePath no mesmo anfitrião. O cmdlet é executado Move-SCVirtualHardDisk como parte da $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 em direto do Hyper-V se a migração tiver falhado porque o anfitrião de origem ou o anfitrião de destino já está a participar noutra migração em direto.

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 o estado guardado associado a uma máquina virtual ou serviço.

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

-HighlyAvailable

Especifica se pretende colocar uma máquina virtual num anfitrião Hyper-V que faça parte de um cluster anfitrião.

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

-JobGroup

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

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

-JobVariable

Especifica o nome de uma variável para o progresso da tarefa.

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

-OnBehalfOfUser

Especifica um nome de utilizador. Este cmdlet funciona em nome do utilizador especificado por este parâmetro.

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

-OnBehalfOfUserRole

Especifica uma função de utilizador. Para obter uma função de utilizador, utilize o cmdlet Get-SCUserRole . Este cmdlet funciona em nome da função de utilizador especificada por este parâmetro.

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

-Path

Especifica o caminho da máquina virtual movida.

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

-PROTipID

Especifica o ID da sugestão de Desempenho e Otimização de Recursos (sugestão PRO) que acionou esta ação. Este parâmetro permite-lhe auditar sugestões PRO.

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

-ReplicationGroup

Especifica um grupo de replicação.

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

-RunAsynchronously

Indica que a tarefa é executada de forma assíncrona para que o controlo regresse imediatamente à shell de comandos.

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

-StartVMOnTarget

Especifica que uma máquina virtual é iniciada assim que este cmdlet a move para o anfitrião de destino.

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

-UseCluster

Indica que este cmdlet utiliza a Migração de Cluster para a transferência de uma máquina virtual que está num estado guardado para um anfitrião, mesmo que o cluster suporte a migração em direto do Hyper-V.

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

-UseDiffDiskOptimization

Indica que o cmdlet utiliza a otimização do disco de diferenciação.

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

-UseLAN

Indica que este cmdlet utiliza a transferência através da LAN, mesmo que esteja disponível um mecanismo de transferência mais rápido.

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

-VM

Especifica um objeto de máquina virtual.

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

-VMHost

Especifica um objeto anfitrião de máquina virtual. O VMM suporta anfitriões Hyper-V, anfitriões VMware ESX e anfitriões Citrix XenServer.

Para obter mais informações sobre cada tipo de anfitrião, veja o cmdlet Add-SCVMHost .

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

Saídas

VirtualMachine

Este cmdlet devolve um objeto VirtualMachine .