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
Default (Padrão)
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 a migração ao vivo de máquinas virtuais entre dois computadores autônomos e a migração ao vivo entre computadores autônomos e um nó de cluster. Além disso, há suporte para várias migrações ao vivo simultâneas. 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 baseado em Windows (.vhd) e arquivos de disco rígido virtual baseado em VMware (.vmdk) 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 do Windows Server 2016, por padrão, o VMM usará Hyper-V migração dinâmica 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. Você não precisa 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 que você mova 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 parado 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
Você não precisa 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 de VMware VMotion. Você não precisa 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 do 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 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. Essa migração não move arquivos. Uma transferência de SAN é muito mais rápida do que mover arquivos de máquina virtual de um host para outro por meio de uma rede local (LAN). O VMM dá suporte à migração de 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 HBA (adaptador de barramento de host) com suporte a NPIV estiver disponível.
- Migração de rede. Se nenhum método mais rápido estiver disponível, o VMM usará 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 de 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 esteja armazenada no momento 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 é concluído, 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 pelo 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 movimentação, 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 em 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 de 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 do 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 dinâmica
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 em $MoveVhdPath. Este é o caminho para 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 na 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 para mover VM06.
O quinto comando cria uma nova cadeia de caracteres GUID e a armazena na variável $JobGroupID. Esse GUID é uma ID de grupo de trabalhos 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. Esse comando especifica o parâmetro JobGroup para que ele não seja realmente executado até que Move-SCVirtualMachine dispare a execução de qualquer comando 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 dinâmica Hyper-V se a migração falhar porque o host de origem ou o host de destino já está participando de outra migração dinâmica.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
| Aliases: | BlockLMIfHostBusy |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-DiscardSavedState
Indica que esse cmdlet exclui o estado salvo associado a uma máquina virtual ou serviço.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-HighlyAvailable
Especifica se uma máquina virtual deve ser colocada em um host Hyper-V que faz parte de um cluster de host.
Propriedades do parâmetro
| Tipo: | Boolean |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-JobGroup
Especifica um identificador para uma série de comandos que é executado como um conjunto logo antes da execução do comando final que inclui o mesmo identificador de grupo de tarefas.
Propriedades do parâmetro
| Tipo: | Guid |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-JobVariable
Especifica o nome de uma variável para o progresso do trabalho.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-OnBehalfOfUser
Especifica um nome de usuário. Esse cmdlet opera em nome do usuário especificado por esse parâmetro.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-OnBehalfOfUserRole
Especifica uma função de usuário. Para obter uma função de usuário, use o cmdlet Get-SCUserRole . Esse cmdlet opera em nome da função de usuário especificada por esse parâmetro.
Propriedades do parâmetro
| Tipo: | UserRole |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-Path
Especifica o caminho da máquina virtual movida.
Propriedades do parâmetro
| Tipo: | String |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-PROTipID
Especifica a ID da dica de Otimização de Recursos e Desempenho (dica PRO) que disparou essa ação. Esse parâmetro permite que você audite dicas pro.
Propriedades do parâmetro
| Tipo: | Guid |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-ReplicationGroup
Especifica um grupo de replicação.
Propriedades do parâmetro
| Tipo: | ReplicationGroup |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-RunAsynchronously
Indica que o trabalho é executado de forma assíncrona para que o controle retorne ao shell de comando imediatamente.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-StartVMOnTarget
Especifica que uma máquina virtual é iniciada assim que esse cmdlet a move para seu host de destino.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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 dê suporte a Hyper-V migração dinâmica.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-UseDiffDiskOptimization
Indica que o cmdlet usa a otimização de disco diferencial.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | 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.
Propriedades do parâmetro
| Tipo: | SwitchParameter |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-VM
Especifica um objeto de máquina virtual.
Propriedades do parâmetro
| Tipo: | VM |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
-VMHost
Especifica um objeto de host de máquina virtual. O VMM oferece suporte a hosts Hyper-V, hosts VMware ESX e hosts Citrix XenServer.
Para obter mais informações sobre cada tipo de host, consulte o cmdlet Add-SCVMHost .
Propriedades do parâmetro
| Tipo: | Host |
| Valor padrão: | None |
| Dá suporte a curingas: | False |
| DontShow: | False |
Conjuntos de parâmetros
(All)
| Cargo: | Named |
| Obrigatório: | False |
| Valor do pipeline: | True |
| Valor do pipeline pelo nome da propriedade: | False |
| Valor dos argumentos restantes: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
Saídas
VirtualMachine
Esse cmdlet retorna um objeto VirtualMachine .
Links 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