Fazer backup e restaurar VMs do Azure usando o Azure PowerShell

Este artigo descreve como fazer backup e restaurar uma VM do Azure em um cofre dos Serviços de Recuperação de Backup do Azure usando cmdlets do PowerShell.

O Azure Backup fornece cópias de segurança independentes e isoladas para que estas protejam os dados nas suas VMs contra a destruição acidental. As cópias de segurança são armazenadas num cofre dos Serviços de Recuperação com gestão de pontos de recuperação incorporada. A configuração e o dimensionamento são simples, as cópias de segurança são otimizadas e pode restaurar facilmente, conforme necessário.

Antes de poder criar cópias de segurança (ou proteger) uma máquina virtual, tem de concluir os pré-requisitos para preparar o seu ambiente para proteger as VMs.

Antes de começar

Hierarquia de objetos dos Serviços de Recuperação

A hierarquia de objetos é resumida no diagrama a seguir.

Disgram shows the Recovery Services object hierarchy.

Analise a referência de referência do cmdlet Az.RecoveryServicesna biblioteca do Azure.

Configurar e registar

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Para começar:

  1. Baixe a versão mais recente do PowerShell

  2. Encontre os cmdlets do PowerShell de Backup do Azure disponíveis digitando o seguinte comando:

    Get-Command *azrecoveryservices*
    

    Os aliases e cmdlets do Backup do Azure, do Azure Site Recovery e do cofre dos Serviços de Recuperação são exibidos. A imagem a seguir é um exemplo do que você verá. Não é a lista completa de cmdlets.

    Screenshot shows the list of Recovery Services.

  3. Entre na sua conta do Azure usando Connect-AzAccount. Este cmdlet exibe uma página da Web solicitando as credenciais da sua conta:

    • Como alternativa, você pode incluir suas credenciais de conta como um parâmetro no cmdlet Connect-AzAccount , usando o parâmetro -Credential .
    • Se você for um parceiro CSP trabalhando em nome de um locatário, especifique o cliente como um locatário, usando seu tenantID ou tenant primary domain name. Por exemplo: Connect-AzAccount -Tenant "fabrikam.com"
  4. Associe a subscrição que pretende utilizar à conta, uma vez que uma conta pode ter várias subscrições:

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  5. Se você estiver usando o Backup do Azure pela primeira vez, deverá usar o cmdlet Register-AzResourceProvider para registrar o provedor do Serviço de Recuperação do Azure com sua assinatura.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  6. Você pode verificar se os Provedores se registraram com êxito, usando os seguintes comandos:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    

    Na saída do comando, o RegistrationState deve mudar para Registered. Caso contrário, execute o cmdlet Register-AzResourceProvider novamente.

Criar um cofre dos Serviços de Recuperação

As etapas a seguir orientam você na criação de um cofre dos Serviços de Recuperação. Um cofre dos Serviços de Recuperação é diferente de um cofre de Backup.

  1. O cofre dos Serviços de Recuperação é um recurso do Gerenciador de Recursos, portanto, você precisa colocá-lo em um grupo de recursos. Você pode usar um grupo de recursos existente ou criar um grupo de recursos com o cmdlet New-AzResourceGroup. Ao criar um grupo de recursos, especifique o nome e o local para o grupo de recursos.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. Use o cmdlet New-AzRecoveryServicesVault para criar o cofre dos Serviços de Recuperação. Certifique-se de especificar o mesmo local para o cofre que foi usado para o grupo de recursos.

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. Especifique o tipo de redundância de armazenamento a ser usado. Você pode usar o Armazenamento Localmente Redundável (LRS), o Armazenamento com Redundância Geográfica (GRS) ou o Armazenamento com Redundância de Zona (ZRS). O exemplo a seguir mostra a opção -BackupStorageRedundancy para testvault definir como GeoRedundant.

    $vault1 = Get-AzRecoveryServicesVault -Name "testvault"
    Set-AzRecoveryServicesBackupProperty  -Vault $vault1 -BackupStorageRedundancy GeoRedundant
    

    Gorjeta

    Muitos cmdlets do Azure Backup requerem o objeto do cofre dos Serviços de Recuperação como entrada. Por esse motivo, é conveniente armazenar o objeto do cofre dos Serviços de Recuperação de Backup em uma variável.

Ver os cofres numa subscrição

Para exibir todos os cofres na assinatura, use Get-AzRecoveryServicesVault:

Get-AzRecoveryServicesVault

A saída é semelhante ao exemplo a seguir, observe que ResourceGroupName e Location associados são fornecidos.

Name              : Contoso-vault
ID                : /subscriptions/1234
Type              : Microsoft.RecoveryServices/vaults
Location          : WestUS
ResourceGroupName : Contoso-docs-rg
SubscriptionId    : 1234-567f-8910-abc
Properties        : Microsoft.Azure.Commands.RecoveryServices.ARSVaultProperties

Fazer cópia de segurança de VMs do Azure

Use um cofre dos Serviços de Recuperação para proteger suas máquinas virtuais. Antes de aplicar a proteção, defina o contexto do cofre (o tipo de dados protegidos no cofre) e verifique a política de proteção. A política de proteção é o agendamento quando os trabalhos de backup são executados e por quanto tempo cada instantâneo de backup é mantido.

Definir contexto do cofre

Antes de habilitar a proteção em uma VM, use Set-AzRecoveryServicesVaultContext para definir o contexto do cofre. Quando o contexto do cofre estiver definido, é aplicado a todos os cmdlets subsequentes. O exemplo a seguir define o contexto do vault para o vault, testvault.

Get-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "Contoso-docs-rg" | Set-AzRecoveryServicesVaultContext

Buscar o ID do cofre

Planejamos substituir a configuração de contexto do cofre de acordo com as diretrizes do Azure PowerShell. Em vez disso, você pode armazenar ou buscar o ID do cofre e passá-lo para comandos relevantes. Portanto, se você não definiu o contexto do vault ou deseja especificar o comando a ser executado para um determinado vault, passe o ID do vault como "-vaultID" para todos os comandos relevantes, da seguinte maneira:

$targetVault = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault"
$targetVault.ID

Ou

$targetVaultID = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault" | select -ExpandProperty ID

Modificando as configurações de replicação de armazenamento

Use o comando Set-AzRecoveryServicesBackupProperty para definir a configuração de replicação de armazenamento do vault como LRS/GRS

Set-AzRecoveryServicesBackupProperty -Vault $targetVault -BackupStorageRedundancy GeoRedundant/LocallyRedundant

Nota

A redundância de armazenamento só pode ser modificada se não houver itens de backup protegidos no cofre.

Criar uma política de proteção

Quando cria um cofre dos Serviços de Recuperação, aquele inclui políticas de proteção e retenção predefinidas. A política de proteção predefinida aciona um trabalho de cópia de segurança todos os dias a uma hora especificada. A política de retenção predefinida retém o ponto de recuperação diária durante 30 dias. Você pode usar a política padrão para proteger rapidamente sua VM e editá-la posteriormente com detalhes diferentes.

Use Get-AzRecoveryServicesBackupProtectionPolicy para exibir as políticas de proteção disponíveis no cofre. Você pode usar esse cmdlet para obter uma política específica ou para exibir as políticas associadas a um tipo de carga de trabalho. O exemplo a seguir obtém políticas para o tipo de carga de trabalho, AzureVM.

Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID

O resultado é semelhante ao seguinte exemplo:

Name                 WorkloadType       BackupManagementType BackupTime                DaysOfWeek
----                 ------------       -------------------- ----------                ----------
DefaultPolicy        AzureVM            AzureVM              4/14/2016 5:00:00 PM

Nota

O fuso horário do campo BackupTime no PowerShell é UTC. No entanto, quando a hora de backup é mostrada no portal do Azure, a hora é ajustada ao seu fuso horário local.

Uma política de proteção de backup está associada a pelo menos uma política de retenção. Uma política de retenção define por quanto tempo um ponto de recuperação é mantido antes de ser excluído.

Por padrão, uma hora de início é definida no Schedule Policy Object. Use o exemplo a seguir para alterar a hora de início para a hora de início desejada. A hora de início desejada também deve estar em UTC. O exemplo a seguir pressupõe que a hora de início desejada é 01:00 AM UTC para backups diários.

$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureVM"
$UtcTime = Get-Date -Date "2019-03-20 01:00:00Z"
$UtcTime = $UtcTime.ToUniversalTime()
$schpol.ScheduleRunTimes[0] = $UtcTime

Importante

Você precisa fornecer a hora de início em múltiplos de 30 minutos apenas. No exemplo acima, pode ser apenas "01:00:00" ou "02:30:00". A hora de início não pode ser "01:15:00"

O exemplo a seguir armazena a política de agendamento e a política de retenção em variáveis. O exemplo usa essas variáveis para definir os parâmetros ao criar uma política de proteção, NewPolicy.

$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "AzureVM"
New-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -WorkloadType "AzureVM" -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $targetVault.ID

O resultado é semelhante ao seguinte exemplo:

Name                 WorkloadType       BackupManagementType BackupTime                DaysOfWeek
----                 ------------       -------------------- ----------                ----------
NewPolicy           AzureVM            AzureVM              4/24/2016 1:30:00 AM

Ativar a proteção

Depois de definir a política de proteção, você ainda deve habilitá-la para um item. Use Enable-AzRecoveryServicesBackupProtection para habilitar a proteção. Habilitar a proteção requer dois objetos - o item e a política. Depois que a política for associada ao cofre, o fluxo de trabalho de backup será acionado no momento definido na agenda da política.

Importante

Ao usar o PowerShell para habilitar o backup para várias VMs ao mesmo tempo, certifique-se de que uma única política não tenha mais de 100 VMs associadas a ela. Esta é uma prática recomendada. Atualmente, o cliente PowerShell não bloqueia explicitamente se houver mais de 100 VMs, mas a verificação está planejada para ser adicionada no futuro.

Os exemplos a seguir habilitam a proteção para o item, V2VM, usando a política, NewPolicy. Os exemplos diferem com base em se a VM está criptografada e que tipo de criptografia.

Para habilitar a proteção em VMs do Gerenciador de Recursos não criptografadas:

$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID

Para habilitar a proteção em VMs criptografadas (criptografadas usando BEK e KEK), você deve conceder permissão ao serviço de Backup do Azure para ler chaves e segredos do cofre de chaves.

Set-AzKeyVaultAccessPolicy -VaultName "KeyVaultName" -ResourceGroupName "RGNameOfKeyVault" -PermissionsToKeys backup,get,list -PermissionsToSecrets get,list -ServicePrincipalName 262044b1-e2ce-469f-a196-69ab7ada62d3
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID

Para habilitar a proteção em VMs criptografadas (criptografadas usando somente BEK), você deve conceder permissão ao serviço de Backup do Azure para ler segredos do cofre de chaves.

Set-AzKeyVaultAccessPolicy -VaultName "KeyVaultName" -ResourceGroupName "RGNameOfKeyVault" -PermissionsToSecrets backup,get,list -ServicePrincipalName 262044b1-e2ce-469f-a196-69ab7ada62d3
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID

Nota

Se você estiver usando a nuvem do Azure Government, use o valor ff281ffe-705c-4f53-9f37-a40e6f2c68f3 para o parâmetro ServicePrincipalName no cmdlet Set-AzKeyVaultAccessPolicy .

Se desejar fazer backup seletivamente de alguns discos e excluir outros, conforme mencionado nesses cenários, você poderá configurar a proteção e fazer backup apenas dos discos relevantes, conforme documentado aqui.

Monitorando uma tarefa de backup

Você pode monitorar operações de longa execução, como trabalhos de backup, sem usar o portal do Azure. Para obter o status de um trabalho em andamento, use o cmdlet Get-AzRecoveryservicesBackupJob . Este cmdlet obtém os trabalhos de backup para um cofre específico, e esse cofre é especificado no contexto do cofre. O exemplo a seguir obtém o status de um trabalho em andamento como uma matriz e armazena o status na variável $joblist.

$joblist = Get-AzRecoveryservicesBackupJob –Status "InProgress" -VaultId $targetVault.ID
$joblist[0]

O resultado é semelhante ao seguinte exemplo:

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   ----------
V2VM             Backup               InProgress            4/23/2016                5:00:30 PM                cf4b3ef5-2fac-4c8e-a215-d2eba4124f27

Em vez de sondar esses trabalhos para conclusão - o que é um código adicional desnecessário - use o cmdlet Wait-AzRecoveryServicesBackupJob . Este cmdlet pausa a execução até que o trabalho seja concluído ou o valor de tempo limite especificado seja atingido.

Wait-AzRecoveryServicesBackupJob -Job $joblist[0] -Timeout 43200 -VaultId $targetVault.ID

Gerir as cópias de segurança de VMs do Azure

Modificar uma política de proteção

Para modificar a política de proteção, use Set-AzRecoveryServicesBackupProtectionPolicy para modificar os objetos SchedulePolicy ou RetentionPolicy.

Modificar a hora agendada

Quando cria uma política de proteção, é-lhe atribuída uma hora de início por predefinição. Os exemplos a seguir mostram como modificar a hora de início de uma política de proteção.

$SchPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureVM"
$UtcTime = Get-Date -Date "2019-03-20 01:00:00Z" (This is the time that you want to start the backup)
$UtcTime = $UtcTime.ToUniversalTime()
$SchPol.ScheduleRunTimes[0] = $UtcTime
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Set-AzRecoveryServicesBackupProtectionPolicy -Policy $pol  -SchedulePolicy $SchPol -VaultId $targetVault.ID

Modificando a retenção

O exemplo a seguir altera a retenção do ponto de recuperação para 365 dias.

$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "AzureVM"
$retPol.DailySchedule.DurationCountInDays = 365
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Set-AzRecoveryServicesBackupProtectionPolicy -Policy $pol  -RetentionPolicy $RetPol -VaultId $targetVault.ID

Configurando a retenção de instantâneos de restauração instantânea

Nota

A partir da versão 1.6.0 do Azure PowerShell, é possível atualizar o período de retenção de instantâneo de restauração instantânea na política usando o PowerShell

$bkpPol = Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID
$bkpPol.SnapshotRetentionInDays=7
Set-AzRecoveryServicesBackupProtectionPolicy -policy $bkpPol -VaultId $targetVault.ID

O valor padrão será 2. Você pode definir o valor com um mínimo de 1 e máximo de 5. Para políticas de backup semanais, o período é definido como 5 e não pode ser alterado.

Criando o grupo de recursos do Backup do Azure durante a retenção de instantâneo

Nota

A partir da versão 3.7.0 do Azure PowerShell, é possível criar e editar o grupo de recursos criado para armazenar instantâneos instantâneos.

Para entender mais sobre as regras de criação de grupos de recursos e outros detalhes relevantes, consulte a documentação do grupo de recursos do Backup do Azure para Máquinas Virtuais .

$bkpPol = Get-AzureRmRecoveryServicesBackupProtectionPolicy -name "DefaultPolicyForVMs"
$bkpPol.AzureBackupRGName="Contosto_"
$bkpPol.AzureBackupRGNameSuffix="ForVMs"
Set-AzureRmRecoveryServicesBackupProtectionPolicy -policy $bkpPol

Excluir discos para uma VM protegida

O backup de VM do Azure fornece um recurso para excluir ou incluir seletivamente discos que são úteis nesses cenários. Se a máquina virtual já estiver protegida pelo backup da VM do Azure e se for feito backup de todos os discos, você poderá modificar a proteção para incluir ou excluir discos seletivamente, conforme mencionado aqui.

Acionar um backup

Use Backup-AzRecoveryServicesBackupItem para disparar uma tarefa de backup. Se for o backup inicial, é um backup completo. Os backups subsequentes fazem uma cópia incremental. O exemplo a seguir usa um backup de VM para ser retido por 60 dias.

$namedContainer = Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$item = Get-AzRecoveryServicesBackupItem -Container $namedContainer -WorkloadType "AzureVM" -VaultId $targetVault.ID
$endDate = (Get-Date).AddDays(60).ToUniversalTime()
$job = Backup-AzRecoveryServicesBackupItem -Item $item -VaultId $targetVault.ID -ExpiryDateTimeUTC $endDate

O resultado é semelhante ao seguinte exemplo:

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   ----------
V2VM              Backup              InProgress          4/23/2016                  5:00:30 PM                cf4b3ef5-2fac-4c8e-a215-d2eba4124f27

Nota

O fuso horário dos campos StartTime e EndTime no PowerShell é UTC. No entanto, quando a hora é mostrada no portal do Azure, a hora é ajustada ao seu fuso horário local.

Alterar a política para itens de backup

Você pode modificar a política existente ou alterar a política do item de backup de Policy1 para Policy2. Para alternar políticas para um item de backup, busque a política relevante e faça backup do item e use o comando Enable-AzRecoveryServices com o item de backup como parâmetro.

$TargetPol1 = Get-AzRecoveryServicesBackupProtectionPolicy -Name <PolicyName> -VaultId $targetVault.ID
$anotherBkpItem = Get-AzRecoveryServicesBackupItem -WorkloadType AzureVM -BackupManagementType AzureVM -Name "<BackupItemName>" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Item $anotherBkpItem -Policy $TargetPol1 -VaultId $targetVault.ID

O comando aguarda até que o backup de configuração seja concluído e retorna a saída a seguir.

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
TestVM           ConfigureBackup      Completed            3/18/2019 8:00:21 PM      3/18/2019 8:02:16 PM      654e8aa2-4096-402b-b5a9-e5e71a496c4e

Proteção contra parar

Reter dados

Se desejar interromper a proteção, você pode usar o cmdlet Disable-AzRecoveryServicesBackupProtection PowerShell. Isso interromperá os backups agendados, mas os dados de backup até agora serão retidos para sempre.

$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureVM -WorkloadType AzureVM -Name "<backup item name>" -VaultId $targetVault.ID
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID

Retomar cópia de segurança

Se a proteção for interrompida e os dados de backup forem mantidos, você poderá retomar a proteção mais uma vez. Você precisa atribuir uma política para a proteção renovada. O cmdlet é o mesmo da política de alteração de itens de backup.

$TargetPol1 = Get-AzRecoveryServicesBackupProtectionPolicy -Name <PolicyName> -VaultId $targetVault.ID
$anotherBkpItem = Get-AzRecoveryServicesBackupItem -WorkloadType AzureVM -BackupManagementType AzureVM -Name "<BackupItemName>" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Item $anotherBkpItem -Policy $TargetPol1 -VaultId $targetVault.ID

Eliminar dados de cópia de segurança

Para remover completamente os dados de backup armazenados no cofre, adicione o sinalizador/switch '-RemoveRecoveryPoints' ao comando de proteção 'desabilitar'.

Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID -RemoveRecoveryPoints

Restaurar uma VM do Azure

Há uma diferença importante entre restaurar uma VM usando o portal do Azure e restaurar uma VM usando o PowerShell. Com o PowerShell, a operação de restauração é concluída assim que os discos e as informações de configuração do ponto de recuperação são criados. A operação de restauração não cria a máquina virtual. Para criar uma máquina virtual a partir do disco, consulte a seção Criar a VM a partir de discos restaurados. Se você não quiser restaurar a VM inteira, mas quiser restaurar ou recuperar alguns arquivos de um backup de VM do Azure, consulte a seção de recuperação de arquivos.

Gorjeta

A operação de restauração não cria a máquina virtual.

O gráfico a seguir mostra a hierarquia de objetos de RecoveryServicesVault baixo para o BackupRecoveryPoint.

Screenshot shows the BackupContainer listed by Recovery Services object hierarchy.

Para restaurar os dados de backup, identifique o item de backup e o ponto de recuperação que contém os dados point-in-time. Use Restore-AzRecoveryServicesBackupItem para restaurar dados do cofre para sua conta.

As etapas básicas para restaurar uma VM do Azure são:

  • Selecione a VM.
  • Escolha um ponto de recuperação.
  • Restaure os discos.
  • Crie a VM a partir de discos armazenados.

Agora, você também pode usar o PowerShell para restaurar diretamente o conteúdo de backup para uma VM (original/nova), sem executar as etapas acima separadamente. Para obter mais informações, consulte Restaurar dados para máquina virtual usando o PowerShell.

Selecione a VM (ao restaurar arquivos)

Para obter o objeto do PowerShell que identifica o item de backup correto, comece a partir do contêiner no cofre e percorra a hierarquia de objetos. Para selecionar o contêiner que representa a VM, use o cmdlet Get-AzRecoveryServicesBackupContainer e canalize-o para o cmdlet Get-AzRecoveryServicesBackupItem.

$namedContainer = Get-AzRecoveryServicesBackupContainer  -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$backupitem = Get-AzRecoveryServicesBackupItem -Container $namedContainer  -WorkloadType "AzureVM" -VaultId $targetVault.ID

Escolha um ponto de recuperação (ao restaurar arquivos)

Use o cmdlet Get-AzRecoveryServicesBackupRecoveryPoint para listar todos os pontos de recuperação para o item de backup. Em seguida, escolha o ponto de recuperação a ser restaurado. Se você não tiver certeza de qual ponto de recuperação usar, é uma boa prática escolher o ponto RecoveryPointType = AppConsistent mais recente na lista.

No script a seguir, a variável, $rp, é uma matriz de pontos de recuperação para o item de backup selecionado, dos últimos sete dias. A matriz é classificada em ordem inversa de tempo com o ponto de recuperação mais recente no índice 0. Use a indexação de matriz padrão do PowerShell para escolher o ponto de recuperação. No exemplo, $rp[0] seleciona o ponto de recuperação mais recente.

$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]

O resultado é semelhante ao seguinte exemplo:

RecoveryPointAdditionalInfo :
SourceVMStorageType         : NormalStorage
Name                        : 15260861925810
ItemName                    : VM;iaasvmcontainer;RGName1;V2VM
RecoveryPointId             : /subscriptions/XX/resourceGroups/ RGName1/providers/Microsoft.RecoveryServices/vaults/testvault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainer;RGName1;V2VM/protectedItems/VM;iaasvmcontainer; RGName1;V2VM/recoveryPoints/15260861925810
RecoveryPointType           : AppConsistent
RecoveryPointTime           : 4/23/2016 5:02:04 PM
WorkloadType                : AzureVM
ContainerName               : IaasVMContainer;iaasvmcontainer; RGName1;V2VM
ContainerType               : AzureVM
BackupManagementType        : AzureVM

Restaurar os discos

Use o cmdlet Restore-AzRecoveryServicesBackupItem para restaurar os dados e a configuração de um item de backup para um ponto de recuperação. Depois de identificar um ponto de recuperação, use-o como o valor para o parâmetro -RecoveryPoint . Na amostra acima, $rp[0] foi o ponto de recuperação a ser usado. No código de exemplo a seguir, $rp[0] é o ponto de recuperação a ser usado para restaurar o disco.

Para restaurar os discos e as informações de configuração:

$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID
$restorejob

Restaurar discos gerenciados

Nota

Se a VM com backup tiver discos gerenciados e você quiser restaurá-los como discos gerenciados, introduzimos o recurso do módulo Azure PowerShell RM v 6.7.0. em diante.

Forneça um parâmetro adicional TargetResourceGroupName para especificar o RG para o qual os discos gerenciados serão restaurados.

Importante

É altamente recomendável usar o parâmetro TargetResourceGroupName para restaurar discos gerenciados, pois isso resulta em melhorias significativas de desempenho. Se esse parâmetro não for fornecido, você não poderá se beneficiar da funcionalidade de restauração instantânea e a operação de restauração será mais lenta em comparação. Se o objetivo for restaurar discos gerenciados como discos não gerenciados, não forneça esse parâmetro e deixe clara a intenção fornecendo o -RestoreAsUnmanagedDisks parâmetro. O -RestoreAsUnmanagedDisks parâmetro está disponível a partir do Azure PowerShell 3.7.0 em diante. Em versões futuras, será obrigatório fornecer qualquer um desses parâmetros para a experiência de restauração correta.

$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID

O arquivo VMConfig.JSON será restaurado para a conta de armazenamento e os discos gerenciados serão restaurados para o RG de destino especificado.

O resultado é semelhante ao seguinte exemplo:

WorkloadName     Operation          Status               StartTime                 EndTime            JobID
------------     ---------          ------               ---------                 -------          ----------
V2VM              Restore           InProgress           4/23/2016 5:00:30 PM                        cf4b3ef5-2fac-4c8e-a215-d2eba4124f27

Use o cmdlet Wait-AzRecoveryServicesBackupJob para aguardar a conclusão do trabalho de restauração.

Wait-AzRecoveryServicesBackupJob -Job $restorejob -Timeout 43200

Quando o trabalho de restauração for concluído, use o cmdlet Get-AzRecoveryServicesBackupJobDetail para obter os detalhes da operação de restauração. A propriedade JobDetails tem as informações necessárias para reconstruir a VM.

$restorejob = Get-AzRecoveryServicesBackupJob -Job $restorejob -VaultId $targetVault.ID
$details = Get-AzRecoveryServicesBackupJobDetail -Job $restorejob -VaultId $targetVault.ID

Usando a identidade gerenciada para restaurar discos

O Backup do Azure também permite que você use a identidade gerenciada (MSI) durante a operação de restauração para acessar contas de armazenamento nas quais os discos precisam ser restaurados. Atualmente, essa opção é suportada apenas para restauração de disco gerenciado.

Se desejar usar a identidade gerenciada atribuída ao sistema do cofre para restaurar discos, passe um sinalizador adicional -UseSystemAssignedIdentity para o comando Restore-AzRecoveryServicesBackupItem. Se desejar usar uma identidade gerenciada atribuída pelo usuário, passe um parâmetro -UserAssignedIdentityId com a ID do Azure Resource Manager da identidade gerenciada do cofre como o valor do parâmetro. Consulte este artigo para saber como ativar a identidade gerenciada para seus cofres.

Restaurar discos seletivos

Um usuário pode restaurar seletivamente alguns discos em vez de todo o conjunto de backup. Forneça os LUNs de disco necessários como parâmetro para restaurá-los apenas em vez de todo o conjunto, conforme documentado aqui.

Importante

É preciso fazer backup seletivo de discos para restaurar seletivamente os discos. Mais detalhes são fornecidos aqui.

Depois de restaurar os discos, vá para a próxima seção para criar a VM.

Restaurar discos para uma região secundária

Se a restauração entre regiões estiver habilitada no cofre com o qual você protegeu suas VMs, os dados de backup serão replicados para a região secundária. Você pode usar os dados de backup para executar uma restauração. Execute as seguintes etapas para acionar uma restauração na região secundária:

  1. Obtenha o ID do cofre com o qual suas VMs estão protegidas.

  2. Selecione o item de backup correto a ser restaurado.

  3. Selecione o ponto de recuperação apropriado na região secundária que você deseja usar para executar a restauração.

    Para concluir esta etapa, execute este comando:

    $rp=Get-AzRecoveryServicesBackupRecoveryPoint -UseSecondaryRegion -Item $backupitem -VaultId $targetVault.ID
    $rp=$rp[0]
    
  4. Execute o cmdlet Restore-AzRecoveryServicesBackupItem com o -RestoreToSecondaryRegion parâmetro para disparar uma restauração na região secundária.

    Para concluir esta etapa, execute este comando:

    $restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID -VaultLocation $targetVault.Location -RestoreToSecondaryRegion -RestoreOnlyOSDisk
    

    O resultado vai ser semelhante ao exemplo seguinte:

    WorkloadName     Operation             Status              StartTime                 EndTime          JobID
    ------------     ---------             ------              ---------                 -------          ----------
    V2VM             CrossRegionRestore   InProgress           4/23/2016 5:00:30 PM                       cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
    
  5. Execute o cmdlet Get-AzRecoveryServicesBackupJob com o parâmetro para monitorar o -UseSecondaryRegion trabalho de restauração.

    Para concluir esta etapa, execute este comando:

    Get-AzRecoveryServicesBackupJob -From (Get-Date).AddDays(-7).ToUniversalTime() -To (Get-Date).ToUniversalTime() -UseSecondaryRegion -VaultId $targetVault.ID
    

    O resultado vai ser semelhante ao exemplo seguinte:

    WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
    ------------     ---------            ------               ---------                 -------                   -----
    V2VM             CrossRegionRestore   InProgress           2/8/2021 4:24:57 PM                                 2d071b07-8f7c-4368-bc39-98c7fb2983f7
    

Restauração interzonal

Você pode restaurar VMs fixas de zona do Azure em qualquer zona de disponibilidade da mesma região.

Para restaurar uma VM para outra zona, especifique o TargetZoneNumber parâmetro no cmdlet Restore-AzRecoveryServicesBackupItem .

$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID -TargetZoneNumber 3

O resultado vai ser semelhante ao exemplo seguinte:

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
zonevmeus2       Restore              InProgress           1/3/2022 10:27:20 AM                                b2298...

A restauração interzonal é suportada apenas em cenários onde:

  • A VM de origem é fixada por zona e NÃO está criptografada.
  • O ponto de recuperação está presente apenas na camada do vault. Não há suporte apenas para snapshots ou para snapshots e camadas de vault.
  • A opção de recuperação é criar uma nova VM ou restaurar discos. A opção Substituir discos substitui os dados de origem; portanto, a opção de zona de disponibilidade não é aplicável.
  • Criação de VM/discos na mesma região quando a redundância de armazenamento do vault é ZRS. Observe que ele não funciona se a redundância de armazenamento do vault for GRS, mesmo que a VM de origem esteja fixada na zona.
  • Criação de VM/discos na região emparelhada quando a redundância de armazenamento do vault está habilitada para Restauração entre regiões e se a região emparelhada oferece suporte a zonas.

Substituir discos na VM do Azure

Para substituir os discos e as informações de configuração, execute as seguintes etapas:

Criar uma VM a partir de discos restaurados

Depois de restaurar os discos, use as etapas a seguir para criar e configurar a máquina virtual a partir do disco.

Nota

  1. AzureAz módulo 3.0.0 ou superior é necessário.
  2. Para criar VMs criptografadas a partir de discos restaurados, sua função do Azure deve ter permissão para executar a ação, Microsoft.KeyVault/vaults/deploy/action. Se sua função não tiver essa permissão, crie uma função personalizada com esta ação. Para obter mais informações, consulte Funções personalizadas do Azure.
  3. Depois de restaurar os discos, agora você pode obter um modelo de implantação que pode ser usado diretamente para criar uma nova VM. O YOu não precisa de cmdlets diferentes do PowerShell para criar VMs gerenciadas/não gerenciadas que são criptografadas/não criptografadas.

Criar uma VM usando o modelo de implantação

Os detalhes do trabalho resultante fornecem o URI do modelo que pode ser consultado e implantado.

   $properties = $details.properties
   $storageAccountName = $properties["Target Storage Account Name"]
   $containerName = $properties["Config Blob Container Name"]
   $templateBlobURI = $properties["Template Blob Uri"]

O modelo não é diretamente acessível, pois está sob a conta de armazenamento de um cliente e o contêiner fornecido. Precisamos do URL completo (juntamente com um token SAS temporário) para aceder a este modelo.

  1. Primeiro, extraia o nome do modelo do templateBlobURI. O formato é mencionado abaixo. Você pode usar a operação de divisão no PowerShell para extrair o nome do modelo final dessa URL.

    https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>
    
  2. Em seguida, o URL completo pode ser gerado como explicado aqui.

    Set-AzCurrentStorageAccount -Name $storageAccountName -ResourceGroupName <StorageAccount RG name>
    $templateBlobFullURI = New-AzStorageBlobSASToken -Container $containerName -Blob <templateName> -Permission r -FullUri
    
  3. Implante o modelo para criar uma nova VM, conforme explicado aqui.

    New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup -TemplateUri $templateBlobFullURI
    

Criar uma VM usando o arquivo de configuração

A seção a seguir lista as etapas necessárias para criar uma VM usando VMConfig o arquivo.

Nota

É altamente recomendável usar o modelo de implantação detalhado acima para criar uma VM. Esta secção (pontos 1 a 6) será preterida em breve.

  1. Consulte as propriedades do disco restaurado para obter os detalhes do trabalho.

    $properties = $details.properties
    $storageAccountName = $properties["Target Storage Account Name"]
    $containerName = $properties["Config Blob Container Name"]
    $configBlobName = $properties["Config Blob Name"]
    
  2. Defina o contexto de armazenamento do Azure e restaure o arquivo de configuração JSON.

    Set-AzCurrentStorageAccount -Name $storageaccountname -ResourceGroupName "testvault"
    $destination_path = "C:\vmconfig.json"
    Get-AzStorageBlobContent -Container $containerName -Blob $configBlobName -Destination $destination_path
    $obj = ((Get-Content -Path $destination_path -Raw -Encoding Unicode)).TrimEnd([char]0x00) | ConvertFrom-Json
    
  3. Use o arquivo de configuração JSON para criar a configuração da VM.

    $vm = New-AzVMConfig -VMSize $obj.'properties.hardwareProfile'.vmSize -VMName "testrestore"
    
  4. Conecte o disco do sistema operacional e os discos de dados. Esta etapa fornece exemplos de várias configurações de VM gerenciadas e criptografadas. Use o exemplo que se adapta à sua configuração de VM.

    • VMs não gerenciadas e não criptografadas - Use o exemplo a seguir para VMs não gerenciadas e não criptografadas.
        Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.StorageProfile'.osDisk.vhd.Uri -CreateOption "Attach"
        $vm.StorageProfile.OsDisk.OsType = $obj.'properties.StorageProfile'.OsDisk.OsType
        foreach($dd in $obj.'properties.StorageProfile'.DataDisks)
        {
            $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach"
        }
    
    • VMs não gerenciadas e criptografadas com ID do Microsoft Entra (somente BEK) - Para VMs criptografadas e não gerenciadas com ID do Microsoft Entra (criptografadas usando somente BEK), você precisa restaurar o segredo para o cofre de chaves antes de poder anexar discos. Para obter mais informações, consulte Restaurar uma máquina virtual criptografada a partir de um ponto de recuperação do Backup do Azure. O exemplo a seguir mostra como anexar SO e discos de dados para VMs criptografadas. Ao configurar o disco do SO, certifique-se de que menciona o tipo de SO relevante.
        $dekUrl = "https://ContosoKeyVault.vault.azure.net:443/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163"
        $dekUrl = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault"
        Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.storageProfile'.osDisk.vhd.uri -DiskEncryptionKeyUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -CreateOption "Attach" -Windows/Linux
        $vm.StorageProfile.OsDisk.OsType = $obj.'properties.storageProfile'.osDisk.osType
        foreach($dd in $obj.'properties.storageProfile'.dataDisks)
        {
        $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach"
        }
    
    • VMs não gerenciadas e criptografadas com Microsoft Entra ID (BEK e KEK) - Para VMs não gerenciadas e criptografadas com Microsoft Entra ID (criptografadas usando BEK e KEK), restaure a chave e o segredo no cofre de chaves antes de anexar os discos. Para obter mais informações, consulte Restaurar uma máquina virtual criptografada a partir de um ponto de recuperação do Backup do Azure. O exemplo a seguir mostra como anexar SO e discos de dados para VMs criptografadas.
        $dekUrl = "https://ContosoKeyVault.vault.azure.net:443/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163"
        $kekUrl = "https://ContosoKeyVault.vault.azure.net:443/keys/ContosoKey007/x9xxx00000x0000x9b9949999xx0x006"
        $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault"
        Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.storageProfile'.osDisk.vhd.uri -DiskEncryptionKeyUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -CreateOption "Attach" -Windows
        $vm.StorageProfile.OsDisk.OsType = $obj.'properties.storageProfile'.osDisk.osType
        foreach($dd in $obj.'properties.storageProfile'.dataDisks)
        {
        $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach"
        }
    
    • VMs não gerenciadas e criptografadas sem ID do Microsoft Entra (somente BEK) - Para VMs criptografadas não gerenciadas sem ID do Microsoft Entra (criptografadas usando somente BEK), se keyVault/secret de origem não estiverem disponíveis , restaure os segredos para o cofre de chaves usando o procedimento em Restaurar uma máquina virtual não criptografada de um ponto de recuperação do Backup do Azure. Em seguida, execute os scripts a seguir para definir detalhes de criptografia no blob do sistema operacional restaurado (esta etapa não é necessária para um blob de dados). O $dekurl pode ser obtido a partir do keyVault restaurado.

    O script a seguir precisa ser executado somente quando a keyVault/secret de origem não estiver disponível.

        $dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163"
        $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault"
        $encSetting = "{""encryptionEnabled"":true,""encryptionSettings"":[{""diskEncryptionKey"":{""sourceVault"":{""id"":""$keyVaultId""},""secretUrl"":""$dekUrl""}}]}"
        $osBlobName = $obj.'properties.StorageProfile'.osDisk.name + ".vhd"
        $osBlob = Get-AzStorageBlob -Container $containerName -Blob $osBlobName
        $osBlob.ICloudBlob.Metadata["DiskEncryptionSettings"] = $encSetting
        $osBlob.ICloudBlob.SetMetadata()
    

    Depois que os segredos estiverem disponíveis e os detalhes de criptografia também estiverem definidos no Blob do sistema operacional, anexe os discos usando o script fornecido abaixo.

    Se o keyVault/secrets de origem já estiver disponível, o script acima não precisa ser executado.

        Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.StorageProfile'.osDisk.vhd.Uri -CreateOption "Attach"
        $vm.StorageProfile.OsDisk.OsType = $obj.'properties.StorageProfile'.OsDisk.OsType
        foreach($dd in $obj.'properties.StorageProfile'.DataDisks)
        {
        $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach"
        }
    
    • VMs não gerenciadas e criptografadas sem ID do Microsoft Entra (BEK e KEK) - Para VMs não gerenciadas e criptografadas sem ID do Microsoft Entra (criptografadas usando BEK & KEK), se keyVault/key/secret de origem não estiverem disponíveis , restaure a chave e os segredos para o cofre de chaves usando o procedimento em Restaurar uma máquina virtual não criptografada de um ponto de recuperação do Backup do Azure. Em seguida, execute os scripts a seguir para definir detalhes de criptografia no blob do sistema operacional restaurado (esta etapa não é necessária para um blob de dados). O $dekurl e $kekurl podem ser buscados no keyVault restaurado.

    O script abaixo precisa ser executado somente quando a fonte keyVault/key/secret não está disponível.

        $dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163"
        $kekUrl = "https://ContosoKeyVault.vault.azure.net/keys/ContosoKey007/x9xxx00000x0000x9b9949999xx0x006"
        $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault"
        $encSetting = "{""encryptionEnabled"":true,""encryptionSettings"":[{""diskEncryptionKey"":{""sourceVault"":{""id"":""$keyVaultId""},""secretUrl"":""$dekUrl""},""keyEncryptionKey"":{""sourceVault"":{""id"":""$keyVaultId""},""keyUrl"":""$kekUrl""}}]}"
        $osBlobName = $obj.'properties.StorageProfile'.osDisk.name + ".vhd"
        $osBlob = Get-AzStorageBlob -Container $containerName -Blob $osBlobName
        $osBlob.ICloudBlob.Metadata["DiskEncryptionSettings"] = $encSetting
        $osBlob.ICloudBlob.SetMetadata()
    

    Depois que a chave/segredos estiverem disponíveis e os detalhes de criptografia estiverem definidos no Blob do sistema operacional, anexe os discos usando o script fornecido abaixo.

    Se o keyVault/key/secrets de origem estiver disponível, o script acima não precisará ser executado.

        Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.StorageProfile'.osDisk.vhd.Uri -CreateOption "Attach"
        $vm.StorageProfile.OsDisk.OsType = $obj.'properties.StorageProfile'.OsDisk.OsType
        foreach($dd in $obj.'properties.StorageProfile'.DataDisks)
        {
        $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach"
        }
    
    • VMs gerenciadas e não criptografadas - Para VMs gerenciadas não criptografadas, anexe os discos gerenciados restaurados. Para obter informações detalhadas, consulte Anexar um disco de dados a uma VM do Windows usando o PowerShell.

    • VMs gerenciadas e criptografadas com ID do Microsoft Entra (somente BEK) - Para VMs criptografadas gerenciadas com ID do Microsoft Entra (criptografadas usando somente BEK), anexe os discos gerenciados restaurados. Para obter informações detalhadas, consulte Anexar um disco de dados a uma VM do Windows usando o PowerShell.

    • VMs gerenciadas e criptografadas com Microsoft Entra ID (BEK e KEK) - Para VMs criptografadas gerenciadas com ID Microsoft Entra (criptografadas usando BEK e KEK), anexe os discos gerenciados restaurados. Para obter informações detalhadas, consulte Anexar um disco de dados a uma VM do Windows usando o PowerShell.

    • VMs gerenciadas e criptografadas sem ID do Microsoft Entra (somente BEK) - Para VMs gerenciadas e criptografadas sem ID do Microsoft Entra (criptografadas usando somente BEK), se keyVault/secret de origem não estiverem disponíveis , restaure os segredos para o cofre de chaves usando o procedimento em Restaurar uma máquina virtual não criptografada de um ponto de recuperação do Backup do Azure. Em seguida, execute os seguintes scripts para definir os detalhes de criptografia no disco restaurado do sistema operacional (esta etapa não é necessária para um disco de dados). O $dekurl pode ser obtido a partir do keyVault restaurado.

    O script abaixo precisa ser executado somente quando a keyVault/secret de origem não estiver disponível.

    $dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163"
    $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault"
    $diskupdateconfig = New-AzDiskUpdateConfig -EncryptionSettingsEnabled $true
    $encryptionSettingsElement = New-Object Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement
    $encryptionSettingsElement.DiskEncryptionKey = New-Object Microsoft.Azure.Management.Compute.Models.KeyVaultAndSecretReference
    $encryptionSettingsElement.DiskEncryptionKey.SourceVault = New-Object Microsoft.Azure.Management.Compute.Models.SourceVault
    $encryptionSettingsElement.DiskEncryptionKey.SourceVault.Id = $keyVaultId
    $encryptionSettingsElement.DiskEncryptionKey.SecretUrl = $dekUrl
    $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings = New-Object System.Collections.Generic.List[Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement]
    $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings.Add($encryptionSettingsElement)
    $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettingsVersion = "1.1"
    Update-AzDisk -ResourceGroupName "testvault" -DiskName $obj.'properties.StorageProfile'.osDisk.name -DiskUpdate $diskupdateconfig
    

    Depois que os segredos estiverem disponíveis e os detalhes de criptografia forem definidos no disco do sistema operacional, para anexar os discos gerenciados restaurados, consulte Anexar um disco de dados a uma VM do Windows usando o PowerShell.

    • VMs gerenciadas e criptografadas sem ID do Microsoft Entra (BEK e KEK) - Para VMs gerenciadas e criptografadas sem ID do Microsoft Entra (criptografadas usando BEK & KEK), se keyVault/key/secret de origem não estiverem disponíveis , restaure a chave e os segredos para o cofre de chaves usando o procedimento em Restaurar uma máquina virtual não criptografada de um ponto de recuperação do Backup do Azure. Em seguida, execute os seguintes scripts para definir os detalhes de criptografia no disco do sistema operacional restaurado (esta etapa não é necessária para discos de dados). O $dekurl e $kekurl podem ser buscados no keyVault restaurado.

    O script a seguir precisa ser executado somente quando a keyVault/key/secret de origem não estiver disponível.

    $dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163"
    $kekUrl = "https://ContosoKeyVault.vault.azure.net/keys/ContosoKey007/x9xxx00000x0000x9b9949999xx0x006"
    $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault"
    $diskupdateconfig = New-AzDiskUpdateConfig -EncryptionSettingsEnabled $true
    $encryptionSettingsElement = New-Object Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement
    $encryptionSettingsElement.DiskEncryptionKey = New-Object Microsoft.Azure.Management.Compute.Models.KeyVaultAndSecretReference
    $encryptionSettingsElement.DiskEncryptionKey.SourceVault = New-Object Microsoft.Azure.Management.Compute.Models.SourceVault
    $encryptionSettingsElement.DiskEncryptionKey.SourceVault.Id = $keyVaultId
    $encryptionSettingsElement.DiskEncryptionKey.SecretUrl = $dekUrl
    $encryptionSettingsElement.KeyEncryptionKey = New-Object Microsoft.Azure.Management.Compute.Models.KeyVaultAndKeyReference
    $encryptionSettingsElement.KeyEncryptionKey.SourceVault = New-Object Microsoft.Azure.Management.Compute.Models.SourceVault
    $encryptionSettingsElement.KeyEncryptionKey.SourceVault.Id = $keyVaultId
    $encryptionSettingsElement.KeyEncryptionKey.KeyUrl = $kekUrl
    $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings = New-Object System.Collections.Generic.List[Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement]
    $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings.Add($encryptionSettingsElement)
    $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettingsVersion = "1.1"
    Update-AzDisk -ResourceGroupName "testvault" -DiskName $obj.'properties.StorageProfile'.osDisk.name -DiskUpdate $diskupdateconfig
    

    Depois que a chave/segredos estiverem disponíveis e os detalhes de criptografia forem definidos no disco do sistema operacional, para anexar os discos gerenciados restaurados, consulte Anexar um disco de dados a uma VM do Windows usando o PowerShell.

  5. Defina as configurações de rede.

    $nicName="p1234"
    $pip = New-AzPublicIpAddress -Name $nicName -ResourceGroupName "test" -Location "WestUS" -AllocationMethod Dynamic
    $virtualNetwork = New-AzVirtualNetwork -ResourceGroupName "test" -Location "WestUS" -Name "testvNET" -AddressPrefix 10.0.0.0/16
    $virtualNetwork | Set-AzVirtualNetwork
    $vnet = Get-AzVirtualNetwork -Name "testvNET" -ResourceGroupName "test"
    $subnetindex=0
    $nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName "test" -Location "WestUS" -SubnetId $vnet.Subnets[$subnetindex].Id -PublicIpAddressId $pip.Id
    $vm=Add-AzVMNetworkInterface -VM $vm -Id $nic.Id
    
  6. Criar a máquina virtual.

    New-AzVM -ResourceGroupName "test" -Location "WestUS" -VM $vm
    
  7. Empurre a extensão ADE. Se as extensões ADE não forem enviadas por push, os discos de dados serão marcados como não criptografados, portanto, é obrigatório que as etapas abaixo sejam executadas:

    • Para VM com ID do Microsoft Entra - Use o seguinte comando para habilitar manualmente a criptografia para os discos de dados

      Apenas BEK

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -VolumeType Data
      

      BEK e KEK

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId  -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -VolumeType Data
      
    • Para VM sem ID do Microsoft Entra - Use o seguinte comando para habilitar manualmente a criptografia para os discos de dados.

      Se durante a execução do comando ele solicitar AADClientID, você precisará atualizar seu Azure PowerShell.

      Apenas BEK

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
      

      BEK e KEK

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
      

Nota

Certifique-se de excluir manualmente os arquivos JASON criados como parte do processo de disco de restauração de VM criptografado.

Restaurar arquivos de um backup de VM do Azure

Além de restaurar discos, você também pode restaurar arquivos individuais de um backup de VM do Azure. A funcionalidade de restauração de arquivos fornece acesso a todos os arquivos em um ponto de recuperação. Faça a gestão dos ficheiros através do Explorador de Ficheiros como faria para os ficheiros normais.

As etapas básicas para restaurar um arquivo de um backup de VM do Azure são:

  • Selecione a VM
  • Escolher um ponto de recuperação
  • Monte os discos do ponto de recuperação
  • Copie os arquivos necessários
  • Desmonte o disco

Selecione a VM (ao restaurar a VM)

Para obter o objeto do PowerShell que identifica o item de backup correto, comece a partir do contêiner no cofre e percorra a hierarquia de objetos. Para selecionar o contêiner que representa a VM, use o cmdlet Get-AzRecoveryServicesBackupContainer e canalize-o para o cmdlet Get-AzRecoveryServicesBackupItem.

$namedContainer = Get-AzRecoveryServicesBackupContainer  -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$backupitem = Get-AzRecoveryServicesBackupItem -Container $namedContainer  -WorkloadType "AzureVM" -VaultId $targetVault.ID

Escolha um ponto de recuperação (ao restaurar a VM)

Use o cmdlet Get-AzRecoveryServicesBackupRecoveryPoint para listar todos os pontos de recuperação para o item de backup. Em seguida, escolha o ponto de recuperação a ser restaurado. Se você não tiver certeza de qual ponto de recuperação usar, é uma boa prática escolher o ponto RecoveryPointType = AppConsistent mais recente na lista.

No script a seguir, a variável, $rp, é uma matriz de pontos de recuperação para o item de backup selecionado, dos últimos sete dias. A matriz é classificada em ordem inversa de tempo com o ponto de recuperação mais recente no índice 0. Use a indexação de matriz padrão do PowerShell para escolher o ponto de recuperação. No exemplo, $rp[0] seleciona o ponto de recuperação mais recente.

$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]

O resultado é semelhante ao seguinte exemplo:

RecoveryPointAdditionalInfo :
SourceVMStorageType         : NormalStorage
Name                        : 15260861925810
ItemName                    : VM;iaasvmcontainer;RGName1;V2VM
RecoveryPointId             : /subscriptions/XX/resourceGroups/ RGName1/providers/Microsoft.RecoveryServices/vaults/testvault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainer;RGName1;V2VM/protectedItems/VM;iaasvmcontainer; RGName1;V2VM/recoveryPoints/15260861925810
RecoveryPointType           : AppConsistent
RecoveryPointTime           : 4/23/2016 5:02:04 PM
WorkloadType                : AzureVM
ContainerName               : IaasVMContainer;iaasvmcontainer; RGName1;V2VM
ContainerType               : AzureVM
BackupManagementType        : AzureVM

Monte os discos do ponto de recuperação

Use o cmdlet Get-AzRecoveryServicesBackupRPMountScript para obter o script para montar todos os discos do ponto de recuperação.

Nota

Os discos são montados como discos conectados iSCSI na máquina onde o script é executado. A montagem ocorre imediatamente e não incorre em quaisquer encargos.

Get-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID

O resultado é semelhante ao seguinte exemplo:

OsType  Password        Filename
------  --------        --------
Windows e3632984e51f496 V2VM_wus2_8287309959960546283_451516692429_cbd6061f7fc543c489f1974d33659fed07a6e0c2e08740.exe

Execute o script na máquina onde você deseja recuperar os arquivos. Para executar o script, você deve digitar a senha fornecida. Depois que os discos forem anexados, use o Explorador de Arquivos do Windows para procurar os novos volumes e arquivos. Para obter mais informações, consulte o artigo Backup, Recover files from Azure virtual machine backup.

Desmonte os discos

Depois que os arquivos necessários forem copiados, use Disable-AzRecoveryServicesBackupRPMountScript para desmontar os discos. Certifique-se de desmontar os discos para que o acesso aos arquivos do ponto de recuperação seja removido.

Disable-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID

Restaurar dados para a máquina virtual usando o PowerShell

Agora você pode restaurar dados diretamente para a VM original/alternativa sem executar várias etapas.

Restaurar dados para a VM original

$vault = Get-AzRecoveryServicesVault -ResourceGroupName "resourceGroup" -Name "vaultName"
$BackupItem = Get-AzRecoveryServicesBackupItem -BackupManagementType "AzureVM" -WorkloadType "AzureVM" -Name "V2VM" -VaultId $vault.ID
$StartDate = (Get-Date).AddDays(-7)
$EndDate = Get-Date
$RP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $BackupItem -StartDate $StartDate.ToUniversalTime() -EndDate $EndDate.ToUniversalTime() -VaultId $vault.ID
$OriginalLocationRestoreJob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $RP[0] -StorageAccountName "DestStorageAccount" -StorageAccountResourceGroupName "DestStorageAccRG" -VaultId $vault.ID -VaultLocation $vault.Location 
WorkloadName    Operation       Status          StartTime              EndTime
------------    ---------       ------          ---------              -------
V2VM            Restore         InProgress      26-Apr-16 1:14:01 PM   01-Jan-01 12:00:00 AM

O último comando dispara uma operação de restauração de local original para restaurar os dados in-loco na VM existente.

Restaurar dados para uma VM recém-criada

$vault = Get-AzRecoveryServicesVault -ResourceGroupName "resourceGroup" -Name "vaultName"
$BackupItem = Get-AzRecoveryServicesBackupItem -BackupManagementType "AzureVM" -WorkloadType "AzureVM" -Name "V2VM" -VaultId $vault.ID
$StartDate = (Get-Date).AddDays(-7)
$EndDate = Get-Date
$RP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $BackupItem -StartDate $StartDate.ToUniversalTime() -EndDate $EndDate.ToUniversalTime() -VaultId $vault.ID
$AlternateLocationRestoreJob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $RP[0] -TargetResourceGroupName "Target_RG" -StorageAccountName "DestStorageAccount" -StorageAccountResourceGroupName "DestStorageAccRG" -TargetVMName "TagetVirtualMachineName" -TargetVNetName "Target_VNet" -TargetVNetResourceGroup "" -TargetSubnetName "subnetName" -VaultId $vault.ID -VaultLocation $vault.Location 
WorkloadName    Operation       Status          StartTime              EndTime
------------    ---------       ------          ---------              -------
V2VM            Restore         InProgress      26-Apr-16 1:14:01 PM   01-Jan-01 12:00:00 AM

O último comando dispara uma operação de restauração de local alternativo para criar uma nova VM em Target_RG grupo de recursos de acordo com as entradas especificadas pelos parâmetros TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. Isso garante que os dados sejam restaurados na VM, rede virtual e sub-rede necessárias.

Próximos passos

Se preferir usar o PowerShell para interagir com seus recursos do Azure, consulte o artigo do PowerShell, Implantar e gerenciar backup para Windows Server. Se você gerencia backups do DPM, consulte o artigo Implantar e gerenciar backup para DPM.