Een back-up maken van virtuele Azure-VM's en deze herstellen met PowerShell

In dit artikel wordt uitgelegd hoe u een back-up maakt van een Azure-VM en deze herstelt in een Azure Backup Recovery Services-kluis met behulp van PowerShell-cmdlets.

In dit artikel leert u het volgende:

  • Een Recovery Services-kluis maken en de kluiscontext instellen.
  • Een back-upbeleid definiëren
  • Het back-upbeleid toepassen voor de beveiliging van meerdere virtuele machines
  • Een back-uptaak op aanvraag activeren voor de beveiligde virtuele machines. Voordat u een back-up kunt maken van een virtuele machine (of deze kunt beveiligen), moet u de vereisten voltooien voor het voorbereiden van uw omgeving voor het beveiligen van uw VM's.

Voordat u begint

  • Meer informatie over Recovery Services-kluizen.
  • Bekijk de architectuur voor azure-VM-back-up, meer informatie over het back-upproces en bekijk de ondersteuning, beperkingen en vereisten.
  • Bekijk de PowerShell-objecthiërarchie voor Recovery Services.

Recovery Services-objecthiërarchie

De objecthiërarchie wordt samengevat in het volgende diagram.

Recovery Services-objecthiërarchie

Bekijk de naslag voor Az.RecoveryServices-cmdlet in de Azure-bibliotheek.

Instellen en registreren

Notitie

In dit artikel wordt de Azure Az PowerShell-module gebruikt. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

U gaat als volgt aan de slag:

  1. Download de nieuwste versie van PowerShell

  2. Zoek de Azure Backup PowerShell-cmdlets die beschikbaar zijn door de volgende opdracht te typen:

    Get-Command *azrecoveryservices*
    

    De aliassen en cmdlets voor Azure Backup, Azure Site Recovery en de Recovery Services-kluis worden weergegeven. De volgende afbeelding is een voorbeeld van wat u ziet. Dit is niet de volledige lijst met cmdlets.

    lijst met Recovery Services

  3. Meld u aan bij uw Azure-account met Verbinding maken-AzAccount. Met deze cmdlet wordt een webpagina weergegeven met de vraag om uw accountreferenties:

    • U kunt uw accountreferenties ook opnemen als parameter in de cmdlet Verbinding maken-AzAccount met behulp van de parameter -Credential.
    • Als u een CSP-partner bent die namens een tenant werkt, geeft u de klant op als tenant met behulp van hun tenantID of primaire tenantdomeinnaam. Bijvoorbeeld: Verbinding maken-AzAccount -Tenant "fabrikam.com"
  4. Koppel het abonnement dat u wilt gebruiken aan het account, omdat een account verschillende abonnementen kan hebben:

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  5. Als u Azure Backup gebruikt, moet u de cmdlet Register-AzResourceProvider gebruiken om de Azure Recovery Service-provider bij uw abonnement te registreren.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  6. U kunt controleren of de providers zijn geregistreerd met behulp van de volgende opdrachten:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    

    In de uitvoer van de opdracht moet RegistrationState worden gewijzigd in Geregistreerd. Zo niet, dan moet u de cmdlet Register-AzResourceProvider opnieuw uitvoeren.

Een Recovery Services-kluis maken

De volgende stappen leiden u door het maken van een Recovery Services-kluis. Een Recovery Services-kluis is anders dan een Backup-kluis.

  1. De Recovery Services-kluis is een Resource Manager resource, dus u moet deze binnen een resourcegroep plaatsen. U kunt een bestaande resourcegroep gebruiken of een resourcegroep maken met de cmdlet New-AzResourceGroup. Geef bij het maken van een resourcegroep de naam en locatie voor de resourcegroep op.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. Gebruik de cmdlet New-AzRecoveryServicesVault om de Recovery Services-kluis te maken. Zorg ervoor dat u dezelfde locatie voor de kluis opgeeft als die voor de resourcegroep is gebruikt.

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. Geef het type opslag redundantie op dat moet worden gebruikt. U kunt lokaal redundante Storage (LRS),geografisch redundante Storage (GRS) of zone-redundante opslag (ZRS) gebruiken. In het volgende voorbeeld ziet u de optie -BackupStorageRedundancy voor testvault ingesteld op GeoRedundant.

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

    Tip

    Voor veel Azure Backup-cmdlets is het object Recovery Services-kluis als invoer vereist. Daarom is het handiger het object Backup Recovery Services-kluis in een variabele op te slaan.

De kluizen in een abonnement weergeven

Als u alle kluizen in het abonnement wilt weergeven, gebruikt u Get-AzRecoveryServicesVault:

Get-AzRecoveryServicesVault

De uitvoer is vergelijkbaar met het volgende voorbeeld. U ziet dat de bijbehorende ResourceGroupName en Location zijn opgegeven.

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

Back-ups maken van Azure-VM's

Gebruik een Recovery Services-kluis om uw virtuele machines te beveiligen. Voordat u de beveiliging gaat toepassen, stelt u de kluiscontext in (het type gegevens dat in de kluis wordt beveiligd) en controleert u het beveiligingsbeleid. Het beveiligingsbeleid is de planning wanneer de back-uptaken worden uitgevoerd en hoe lang elke back-upmomentopname wordt bewaard.

Kluiscontext instellen

Voordat u beveiliging op een VM inschakelen, gebruikt u Set-AzRecoveryServicesVaultContext om de kluiscontext in te stellen. Zodra deze is ingesteld, is deze op alle navolgende cmdlets van toepassing. In het volgende voorbeeld wordt de kluiscontext voor de kluis, testvault, gemaakt.

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

De kluis-id ophalen

We zijn van plan om de contextinstelling van de kluis af te afgeschaft volgens Azure PowerShell richtlijnen. In plaats daarvan kunt u de kluis-id opslaan of ophalen en deze doorgeven aan relevante opdrachten. Dus als u de kluiscontext niet hebt ingesteld of de opdracht wilt opgeven die moet worden uitgevoerd voor een bepaalde kluis, geeft u de kluis-id als '-vaultID' als volgt door aan alle relevante opdrachten:

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

of

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

Instellingen voor opslagreplicatie wijzigen

Gebruik de opdracht Set-AzRecoveryServicesBackupProperty om de replicatieconfiguratie Storage kluis in te stellen op LRS/GRS

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

Notitie

Opslagredundantie kan alleen worden gewijzigd als er geen back-upitems zijn die zijn beveiligd met de kluis.

Een beveiligingsbeleid maken

Als u een Recovery Services-kluis maakt, gaat deze gepaard met standaardbeleid voor beveiliging en retentie. Volgens het standaardbeveiligingsbeleid wordt elke dag op een bepaald tijdstip een back-uptaak getriggerd. Volgens het standaardbewaarbeleid wordt het dagelijkse herstelpunt gedurende dertig dagen bewaard. U kunt het standaardbeleid gebruiken om uw VM snel te beveiligen en het beleid later met andere details te bewerken.

Gebruik Get-AzRecoveryServicesBackupProtectionPolicy om de beveiligingsbeleidsregels weer te geven die beschikbaar zijn in de kluis. U kunt deze cmdlet gebruiken om een specifiek beleid op te halen of om de beleidsregels te bekijken die zijn gekoppeld aan een workloadtype. In het volgende voorbeeld worden beleidsregels voor het type workload, AzureVM, getypt.

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

De uitvoer lijkt op die in het volgende voorbeeld:

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

Notitie

De tijdzone van het veld BackupTime in PowerShell is UTC. Wanneer de back-uptijd echter wordt weergegeven in de Azure Portal, wordt de tijd aangepast aan uw lokale tijdzone.

Een back-upbeveiligingsbeleid is gekoppeld aan ten minste één bewaarbeleid. Een bewaarbeleid definieert hoe lang een herstelpunt wordt bewaard voordat het wordt verwijderd.

Standaard wordt een begintijd gedefinieerd in het object Planningsbeleid. Gebruik het volgende voorbeeld om de begintijd te wijzigen in de gewenste begintijd. De gewenste begintijd moet ook in UTC zijn. In het volgende voorbeeld wordt ervan uitgenomen dat de gewenste begintijd 01:00 uur UTC is voor dagelijkse back-ups.

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

Belangrijk

U hoeft alleen de begintijd in veelvouden van 30 minuten op te geven. In het bovenstaande voorbeeld kan dit alleen '01:00:00' of '02:30:00' zijn. De begintijd mag niet '01:15:00' zijn

In het volgende voorbeeld worden het planningsbeleid en het retentiebeleid op opslag in variabelen. In het voorbeeld worden deze variabelen gebruikt om de parameters te definiëren bij het maken van een beveiligingsbeleid, NewPolicy.

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

De uitvoer lijkt op die in het volgende voorbeeld:

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

Beveiliging inschakelen

Nadat u het beveiligingsbeleid hebt gedefinieerd, moet u het beleid voor een item nog steeds inschakelen. Gebruik Enable-AzRecoveryServicesBackupProtection om beveiliging in teschakelen. Voor het inschakelen van beveiliging zijn twee objecten vereist: het item en het beleid. Zodra het beleid is gekoppeld aan de kluis, wordt de back-upwerkstroom geactiveerd op het tijdstip dat is gedefinieerd in de beleidsplanning.

Belangrijk

Zorg er tijdens het gebruik van PowerShell voor het inschakelen van back-ups voor meerdere VM's tegelijk voor dat er niet meer dan 100 VM's aan één beleid zijn gekoppeld. Dit is een aanbevolen best practice. Op dit moment blokkeert de PowerShell-client niet expliciet als er meer dan 100 VM's zijn, maar deze controle wordt in de toekomst toegevoegd.

In de volgende voorbeelden wordt beveiliging ingeschakeld voor het item, V2VM, met behulp van het beleid NewPolicy. De voorbeelden verschillen, afhankelijk van of de VM is versleuteld en welk type versleuteling.

De beveiliging op niet-versleutelde virtuele Resource Manager's inschakelen:

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

Als u de beveiliging van versleutelde VM's wilt inschakelen (versleuteld met BEK en KEK), moet u de Azure Backup-service toestemming geven om sleutels en geheimen uit de sleutelkluis te lezen.

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

Als u de beveiliging op versleutelde VM's wilt inschakelen (alleen versleuteld met bek), moet u de Azure Backup-service toestemming geven om geheimen uit de sleutelkluis te lezen.

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

Notitie

Als u de Azure Government cloud gebruikt, gebruikt u de waarde voor de ff281ffe-705c-4f53-9f37-a40e6f2c68f3 parameter ServicePrincipalName in de cmdlet Set-AzKeyVaultAccessPolicy.

Als u selectief een back-up wilt maken van enkele schijven en andere schijven wilt uitsluiten zoals vermeldin deze scenario's, kunt u alleen de beveiliging en back-up van de relevante schijven configureren zoals hier wordt beschreven.

Een back-up job bewaken

U kunt langlopende bewerkingen, zoals back-uptaken, bewaken zonder de Azure Portal. Gebruik de cmdlet Get-AzRecoveryservicesBackupJob om de status van een taak in uitvoering op te halen. Met deze cmdlet worden de back-uptaken voor een specifieke kluis opgeslagen en wordt die kluis opgegeven in de context van de kluis. In het volgende voorbeeld wordt de status van een taak die wordt uitgevoerd, als een matrix op de $joblist op slaat.

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

De uitvoer lijkt op die in het volgende voorbeeld:

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

Gebruik de cmdlet Wait-AzRecoveryServicesBackupJob in plaats van deze taken te peilen voor voltooiing , wat onnodige aanvullende code is. Met deze cmdlet wordt de uitvoering onderbroken totdat de taak is voltooid of de opgegeven time-outwaarde is bereikt.

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

Back-ups van Azure-VM's beheren

Een beveiligingsbeleid wijzigen

Als u het beveiligingsbeleid wilt wijzigen, gebruikt u Set-AzRecoveryServicesBackupProtectionPolicy om de SchedulePolicy- of RetentionPolicy-objecten te wijzigen.

Geplande tijd wijzigen

Wanneer u een beveiligingsbeleid maakt, wordt er standaard een starttijd aan toegewezen. De volgende voorbeelden laten zien hoe u de begintijd van een beveiligingsbeleid kunt wijzigen.

$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

Retentie wijzigen

In het volgende voorbeeld wordt de bewaarperiode van het herstelpunt gewijzigd in 365 dagen.

$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

Direct bewaren van momentopnamen configureren

Notitie

Vanaf Azure PowerShell versie 1.6.0 kunt u de retentieperiode voor momentopnamen van directe herstelmomentopnamen bijwerken in het beleid met behulp van PowerShell

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

De standaardwaarde is 2. U kunt de waarde instellen met minimaal 1 en maximaal 5. Voor beleid voor wekelijkse back-ups is de periode ingesteld op 5 en kan deze niet worden gewijzigd.

Een Azure Backup maken tijdens het bewaren van momentopnamen

Notitie

Vanaf Azure PowerShell versie 3.7.0 kunt u de resourcegroep maken en bewerken die is gemaakt voor het opslaan van directe momentopnamen.

Als u meer wilt weten over regels voor het maken van resourcegroep en andere relevante informatie, raadpleegt u de Azure Backup resourcegroep voor Virtual Machines documentatie.

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

Schijven uitsluiten voor een beveiligde VM

Azure VM Backup biedt de mogelijkheid om selectief schijven uit te sluiten of op te nemen, wat handig is in deze scenario's. Als de virtuele machine al is beveiligd door back-ups van azure-VM's en van alle schijven een back-up wordt gemaakt, kunt u de beveiliging aanpassen om schijven selectief op te nemen of uit te sluiten, zoals hier wordt vermeld.

Een back-up activeren

Gebruik Backup-AzRecoveryServicesBackupItem om een back-up job te activeren. Als het de eerste back-up is, is het een volledige back-up. Volgende back-ups maken een incrementele kopie. In het volgende voorbeeld wordt een VM-back-up gemaakt die 60 dagen moet worden bewaard.

$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

De uitvoer lijkt op die in het volgende voorbeeld:

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

Notitie

De tijdzone van de velden StartTime en EndTime in PowerShell is UTC. Wanneer de tijd echter wordt weergegeven in de Azure Portal, wordt de tijd aangepast aan uw lokale tijdzone.

Beleid voor back-upitems wijzigen

U kunt bestaand beleid wijzigen of het beleid van het back-upitem wijzigen van Policy1 in Policy2. Als u wilt overschakelen naar een ander beleid voor een back-upitem, haalt u het relevante beleid op en maakt u een back-upitem en gebruikt u de opdracht Enable-AzRecoveryServices met het back-upitem als parameter.

$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

De opdracht wacht tot de back-up configureren is voltooid en retourneert de volgende uitvoer.

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

Beveiliging stoppen

Gegevens behouden

Als u de beveiliging wilt stoppen, kunt u de PowerShell-cmdlet Disable-AzRecoveryServicesBackupProtection gebruiken. Hiermee worden de geplande back-ups gestopt, maar worden de gegevens van nu altijd bewaard.

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

Back-up hervatten

Als de beveiliging is gestopt en de back-upgegevens worden bewaard, kunt u de beveiliging nogmaals hervatten. U moet een beleid toewijzen voor de vernieuwde beveiliging. De cmdlet is hetzelfde als die van het wijzigingsbeleid van back-upitems.

$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

Back-upgegevens verwijderen

Als u de opgeslagen back-upgegevens in de kluis volledig wilt verwijderen, voegt u de vlag -RemoveRecoveryPoints toe aan de beveiligingsopdracht Uitschakelen.

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

Een azure-VM herstellen

Er is een belangrijk verschil tussen het herstellen van een VM met behulp van de Azure Portal en het herstellen van een VM met behulp van PowerShell. Met PowerShell is de herstelbewerking voltooid zodra de schijven en configuratiegegevens van het herstelpunt zijn gemaakt. Met de herstelbewerking wordt de virtuele machine niet gemaakt. Als u een virtuele machine van schijf wilt maken, gaat u naar de sectie De virtuele machine maken van herstelde schijven. Als u de hele VM niet wilt herstellen, maar wel een paar bestanden wilt herstellen of herstellen vanuit een back-up van een Azure-VM, raadpleegt u de sectie bestandsherstel.

Tip

Met de herstelbewerking wordt de virtuele machine niet gemaakt.

In de volgende afbeelding ziet u de objecthiërarchie van RecoveryServicesVault tot het BackupRecoveryPoint.

Recovery Services-objecthiërarchie met BackupContainer

Als u back-upgegevens wilt herstellen, identificeert u het back-upitem en het herstelpunt dat de point-in-time-gegevens bevat. Gebruik Restore-AzRecoveryServicesBackupItem om gegevens uit de kluis naar uw account te herstellen.

De basisstappen voor het herstellen van een Azure-VM zijn:

  • Selecteer de VM.
  • Kies een herstelpunt.
  • Herstel de schijven.
  • Maak de VM van opgeslagen schijven.

Selecteer de VM (bij het herstellen van bestanden)

Als u het PowerShell-object wilt op halen dat het juiste back-upitem identificeert, start u vanuit de container in de kluis en werkt u omlaag in de objecthiërarchie. Als u de container wilt selecteren die de VM vertegenwoordigt, gebruikt u de cmdlet Get-AzRecoveryServicesBackupContainer en geeft u deze door aan de 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

Een herstelpunt kiezen (bij het herstellen van bestanden)

Gebruik de cmdlet Get-AzRecoveryServicesBackupRecoveryPoint om alle herstelpunten voor het back-upitem weer te geven. Kies vervolgens het herstelpunt dat u wilt herstellen. Als u niet zeker weet welk herstelpunt u moet gebruiken, is het een goede gewoonte om het meest recente RecoveryPointType = AppConsistent-punt in de lijst te kiezen.

In het volgende script is de variabele, $rp, een matrix met herstelpunten voor het geselecteerde back-upitem van de afgelopen zeven dagen. De matrix wordt in omgekeerde volgorde gesorteerd met het laatste herstelpunt op index 0. Gebruik standaard indexering van PowerShell-matrices om het herstelpunt te kiezen. In het voorbeeld selecteert $rp [0] het meest recente herstelpunt.

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

De uitvoer lijkt op die in het volgende voorbeeld:

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

De schijven herstellen

Gebruik de cmdlet Restore-AzRecoveryServicesBackupItem om de gegevens en configuratie van een back-upitem te herstellen naar een herstelpunt. Zodra u een herstelpunt hebt identificeren, gebruikt u dit als de waarde voor de parameter -RecoveryPoint. In het bovenstaande voorbeeld $rp [0] het te gebruiken herstelpunt. In de volgende voorbeeldcode is $rp [0] het herstelpunt dat moet worden gebruikt voor het herstellen van de schijf.

De schijven en configuratiegegevens herstellen:

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

Beheerde schijven herstellen

Notitie

Als de VM met ondersteuning beheerde schijven heeft en u deze wilt herstellen als beheerde schijven, is de mogelijkheid van Azure PowerShell RM-module v 6.7.0 geïntroduceerd. en verder.

Geef een extra parameter TargetResourceGroupName op om de RG op te geven waarop beheerde schijven worden hersteld.

Belangrijk

Het wordt sterk aanbevolen om de parameter TargetResourceGroupName te gebruiken voor het herstellen van beheerde schijven, omdat dit leidt tot aanzienlijke prestatieverbeteringen. Als deze parameter niet is opgegeven, kunt u niet profiteren van de functionaliteit voor direct herstellen en is de herstelbewerking langzamer in vergelijking. Als het doel is om beheerde schijven te herstellen als niet-beheerde schijven, geeft u deze parameter niet op en maakt u de intentie duidelijk door de parameter op te -RestoreAsUnmanagedDisks geven. De -RestoreAsUnmanagedDisks parameter is beschikbaar vanaf Azure PowerShell 3.7.0. In toekomstige versies is het verplicht om een van deze parameters op te geven voor de juiste herstelervaring.

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

Het bestand VMConfig.JSON wordt hersteld naar het opslagaccount en de beheerde schijven worden hersteld naar de opgegeven doel-RG.

De uitvoer lijkt op die in het volgende voorbeeld:

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

Gebruik de cmdlet Wait-AzRecoveryServicesBackupJob om te wachten tot de taak Herstellen is voltooid.

Wait-AzRecoveryServicesBackupJob -Job $restorejob -Timeout 43200

Zodra de herstelbewerking is voltooid, gebruikt u de cmdlet Get-AzRecoveryServicesBackupJobDetail om de details van de herstelbewerking op te halen. De eigenschap JobDetails beschikt over de informatie die nodig is om de VM opnieuw te bouwen.

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

Beheerde identiteit gebruiken om schijven te herstellen

Azure Backup kunt u ook beheerde identiteit (MSI) gebruiken tijdens de herstelbewerking om toegang te krijgen tot opslagaccounts waarop schijven moeten worden hersteld. Deze optie wordt momenteel alleen ondersteund voor het herstellen van beheerde schijven.

Als u de door het systeem toegewezen beheerde identiteit van de kluis wilt gebruiken om schijven te herstellen, geeft u een extra vlag -UseSystemAssignedIdentity _ door aan de Restore-AzRecoveryServicesBackupItem opdracht. Als u een door de gebruiker toegewezen beheerde identiteit wilt gebruiken, geeft u een parameter -UserAssignedIdentityId_* door met de ARM-id van de beheerde identiteit van de kluis als de waarde van de * parameter. Raadpleeg dit artikel voor meer informatie over het inschakelen van beheerde identiteiten voor uw kluizen.

Selectieve schijven herstellen

Een gebruiker kan selectief enkele schijven herstellen in plaats van de hele back-upset. Geef de vereiste LUN's van de schijf op als parameter om ze alleen te herstellen in plaats van de volledige set zoals hier wordt beschreven.

Belangrijk

U moet selectief een back-up maken van schijven om schijven selectief te herstellen. Meer informatie kunt u hier vinden.

Nadat u de schijven hebt hersteld, gaat u naar de volgende sectie om de VM te maken.

Schijven herstellen naar een secundaire regio

Als herstel tussen regio's is ingeschakeld voor de kluis waarmee u uw VM's hebt beveiligd, worden de back-upgegevens gerepliceerd naar de secundaire regio. U kunt de back-upgegevens gebruiken om een herstel uit te voeren. Voer de volgende stappen uit om een herstel in de secundaire regio te activeren:

  1. Haal de kluis-id op waarmee uw VM's zijn beveiligd.

  2. Selecteer het juiste back-upitem om te herstellen.

  3. Selecteer het juiste herstelpunt in de secundaire regio die u wilt gebruiken om het herstel uit te voeren.

    Voer deze opdracht uit om deze stap te voltooien:

    $rp=Get-AzRecoveryServicesBackupRecoveryPoint -UseSecondaryRegion -Item $backupitem -VaultId $targetVault.ID
    $rp=$rp[0]
    
  4. Voer de cmdlet Restore-AzRecoveryServicesBackupItem uit met de parameter om een herstel in de -RestoreToSecondaryRegion secundaire regio te activeren.

    Voer deze opdracht uit om deze stap te voltooien:

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

    De uitvoer ziet er ongeveer als volgt uit:

    WorkloadName     Operation             Status              StartTime                 EndTime          JobID
    ------------     ---------             ------              ---------                 -------          ----------
    V2VM             CrossRegionRestore   InProgress           4/23/2016 5:00:30 PM                       cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
    
  5. Voer de cmdlet Get-AzRecoveryServicesBackupJob uit met de -UseSecondaryRegion parameter om de hersteljob te controleren.

    Voer deze opdracht uit om deze stap te voltooien:

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

    De uitvoer ziet er ongeveer als volgt uit:

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

Schijven in Azure VM vervangen

Voer de volgende stappen uit om de schijven en configuratiegegevens te vervangen:

Een VM maken van herstelde schijven

Nadat u de schijven hebt hersteld, gebruikt u de volgende stappen om de virtuele machine op schijf te maken en te configureren.

Notitie

  1. AzureAz module 3.0.0 of hoger is vereist.
  2. Als u versleutelde VM's wilt maken op basis van herstelde schijven, moet uw Azure-rol machtigingen hebben om de actie uit te voeren: Microsoft.KeyVault/vaults/deploy/action. Als uw rol deze machtiging niet heeft, maakt u een aangepaste rol met deze actie. Zie Aangepaste Azure-rollen voor meer informatie.
  3. Nadat u schijven hebt hersteld, kunt u nu een implementatiesjabloon krijgen die u rechtstreeks kunt gebruiken om een nieuwe VM te maken. Er zijn geen andere PowerShell-cmdlets nodig om beheerde/on beheerde VM's te maken die zijn versleuteld/niet-versleuteld.

Een VM maken met behulp van de implementatiesjabloon

De resulterende taakdetails bevatten de sjabloon-URI die kan worden opgevraagd en geïmplementeerd.

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

De sjabloon is niet direct toegankelijk omdat deze zich onder het opslagaccount van de klant en de opgegeven container bevindt. We hebben de volledige URL nodig (samen met een tijdelijk SAS-token) om toegang te krijgen tot deze sjabloon.

  1. Haal eerst de naam van de sjabloon op uit de templateBlobURI. De indeling wordt hieronder vermeld. U kunt de splitsbewerking in PowerShell gebruiken om de uiteindelijke sjabloonnaam uit deze URL te extraheren.

    https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>
    
  2. Vervolgens kan de volledige URL worden gegenereerd zoals hier wordt uitgelegd.

    Set-AzCurrentStorageAccount -Name $storageAccountName -ResourceGroupName <StorageAccount RG name>
    $templateBlobFullURI = New-AzStorageBlobSASToken -Container $containerName -Blob <templateName> -Permission r -FullUri
    
  3. Implementeer de sjabloon om een nieuwe VM te maken, zoals hier wordt uitgelegd.

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

Een VM maken met behulp van het configuratiebestand

In de volgende sectie vindt u de stappen die nodig zijn om een VM te maken met behulp van het bestand VMConfig.

Notitie

Het is raadzaam om de hierboven beschreven implementatiesjabloon te gebruiken om een VM te maken. Deze sectie (punten 1-6) wordt binnenkort afgeschaft.

  1. Query's uitvoeren op de eigenschappen van de herstelde schijf voor de taakdetails.

    $properties = $details.properties
    $storageAccountName = $properties["Target Storage Account Name"]
    $containerName = $properties["Config Blob Container Name"]
    $configBlobName = $properties["Config Blob Name"]
    
  2. Stel de Azure-opslagcontext in en herstel het JSON-configuratiebestand.

    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. Gebruik het JSON-configuratiebestand om de VM-configuratie te maken.

    $vm = New-AzVMConfig -VMSize $obj.'properties.hardwareProfile'.vmSize -VMName "testrestore"
    
  4. Koppel de besturingssysteemschijf en gegevensschijven. Deze stap bevat voorbeelden voor verschillende beheerde en versleutelde VM-configuraties. Gebruik het voorbeeld dat past bij uw VM-configuratie.

    • Niet-beheerde en niet-versleutelde VM's: gebruik het volgende voorbeeld voor niet-beheerde, niet-versleutelde VM's.
        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"
        }
    
    • Niet-beheerde en versleutelde VM's met Azure AD (alleen BEK) : voor niet-beheerde, versleutelde VM's met Azure AD (alleen versleuteld met BEK) moet u het geheim herstellen naar de sleutelkluis voordat u schijven kunt koppelen. Zie Restore an encrypted virtual machine from an Azure Backup recovery point (Een versleutelde virtuele machine herstellenvanaf een Azure Backup herstelpunt) voor meer informatie. In het volgende voorbeeld ziet u hoe u besturingssysteem- en gegevensschijven koppelt voor versleutelde VM's. Bij het instellen van de besturingssysteemschijf moet u het relevante type besturingssysteem vermelden.
        $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"
        }
    
    • Niet-beheerde en versleutelde VM's met Azure AD (BEK en KEK) : voor niet-beheerde, versleutelde VM's met Azure AD (versleuteld met BEK en KEK), herstelt u de sleutel en het geheim in de sleutelkluis voordat u de schijven koppelt. Zie Een versleutelde virtuele machine herstellen vanaf een Azure Backup herstelpunt voor meer informatie. In het volgende voorbeeld ziet u hoe u besturingssysteem- en gegevensschijven koppelt voor versleutelde VM's.
        $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"
        }
    
    • Niet-beheerde en versleutelde VM's zonder Azure AD (alleen BEK) : voor niet-beheerde, versleutelde VM's zonder Azure AD (alleen versleuteld met BEK), als bronsleutelkluis/geheim niet beschikbaar is, herstelt u de geheimen naar de sleutelkluis met behulp van de procedure in Een niet-versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt. Voer vervolgens de volgende scripts uit om versleutelingsdetails in te stellen op de herstelde os-blob (deze stap is niet vereist voor een gegevensblob). De $dekurl kunnen worden opgehaald uit de herstelde keyVault.

    Het volgende script hoeft alleen te worden uitgevoerd als de bronsleutelKault/geheim niet beschikbaar is.

        $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()
    

    Nadat de geheimen beschikbaar zijn en de versleutelingsgegevens ook zijn ingesteld op de os-blob, koppelt u de schijven met behulp van het onderstaande script.

    Als de bronsleutelKault/geheimen al beschikbaar zijn, hoeft het bovenstaande script niet te worden uitgevoerd.

        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"
        }
    
    • Niet-beheerde en versleutelde VM's zonder Azure AD (BEK en KEK) : voor niet-beheerde, versleutelde VM's zonder Azure AD (versleuteld met BEK & KEK), als bronsleutelkluis/sleutel/geheim niet beschikbaar is, herstelt u de sleutel en geheimen naar de sleutelkluis met behulp van de procedure in Een niet-versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt. Voer vervolgens de volgende scripts uit om versleutelingsdetails in te stellen op de herstelde os-blob (deze stap is niet vereist voor een gegevensblob). De $dekurl en $kekurl kunnen worden opgehaald uit de herstelde keyVault.

    Het onderstaande script hoeft alleen te worden uitgevoerd als de bronsleutelKault/sleutel/geheim niet beschikbaar is.

        $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()
    

    Nadat de sleutel/geheimen beschikbaar zijn en de versleutelingsgegevens zijn ingesteld op de os-blob, koppelt u de schijven met behulp van het onderstaande script.

    Als de bronsleutelKault/sleutel/geheimen beschikbaar zijn, hoeft het bovenstaande script niet te worden uitgevoerd.

        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"
        }
    
    • Beheerde en niet-versleutelde VM's: koppel voor beheerde niet-versleutelde VM's de herstelde beheerde schijven. Zie Attach a data disk to a Windows VM using PowerShell (Eengegevensschijf koppelen aan een virtuele Windows met behulp van PowerShell) voor uitgebreide informatie.

    • Beheerde en versleutelde VM's met Azure AD (alleen BEK) - Koppel de herstelde beheerde schijven voor beheerde versleutelde VM's met Azure AD (alleen versleuteld met BEK). Zie Attach a data disk to a Windows VM using PowerShell (Eengegevensschijf koppelen aan een virtuele Windows met behulp van PowerShell) voor uitgebreide informatie.

    • Beheerde en versleutelde VM's met Azure AD (BEK en KEK) : koppel de herstelde beheerde schijven voor beheerde versleutelde VM's met Azure AD (versleuteld met BEK en KEK). Zie Attach a data disk to a Windows VM using PowerShell (Eengegevensschijf koppelen aan een virtuele Windows met behulp van PowerShell) voor uitgebreide informatie.

    • Beheerde en versleutelde VM's zonder Azure AD (alleen BEK) : voor beheerde, versleutelde VM's zonder Azure AD (alleen versleuteld met BEK), als bronsleutelkluis/geheim niet beschikbaar is, herstelt u de geheimen naar de sleutelkluis met behulp van de procedure in Een niet-versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt. Voer vervolgens de volgende scripts uit om versleutelingsgegevens in te stellen op de herstelde besturingssysteemschijf (deze stap is niet vereist voor een gegevensschijf). De $dekurl kunnen worden opgehaald uit de herstelde keyVault.

    Het onderstaande script hoeft alleen te worden uitgevoerd als de bronsleutelKault/geheim niet beschikbaar is.

    $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
    

    Nadat de geheimen beschikbaar zijn en de versleutelingsgegevens zijn ingesteld op de besturingssysteemschijf, gaat u naar Een gegevensschijf koppelen aan een Windows-VMmet behulp van PowerShell om de herstelde beheerde schijven te koppelen.

    • Beheerde en versleutelde VM's zonder Azure AD (BEK en KEK) : voor beheerde, versleutelde VM's zonder Azure AD (versleuteld met BEK & KEK), als bronsleutelkluis/sleutel/geheim niet beschikbaar is, herstelt u de sleutel en geheimen naar de sleutelkluis met behulp van de procedure in Een niet-versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt. Voer vervolgens de volgende scripts uit om versleutelingsgegevens in te stellen op de herstelde besturingssysteemschijf (deze stap is niet vereist voor gegevensschijven). De $dekurl en $kekurl kunnen worden opgehaald uit de herstelde keyVault.

    Het volgende script hoeft alleen te worden uitgevoerd als de bronsleutelKault/sleutel/geheim niet beschikbaar is.

    $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
    

    Nadat de sleutel/geheimen beschikbaar zijn en de versleutelingsgegevens zijn ingesteld op de besturingssysteemschijf, gaat u naar Een gegevensschijf koppelen aan een Windows-VMmet behulp van PowerShell om de herstelde beheerde schijven te koppelen.

  5. Stel de netwerkinstellingen in.

    $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. Maak de virtuele machine.

    New-AzVM -ResourceGroupName "test" -Location "WestUS" -VM $vm
    
  7. Push ADE-extensie. Als de ADE-extensies niet worden pushen, worden de gegevensschijven gemarkeerd als niet-versleuteld. Het is dus verplicht om de onderstaande stappen uit te voeren:

    • Voor VM met Azure AD: gebruik de volgende opdracht om handmatig versleuteling in te stellen voor de gegevensschijven

      Alleen BEK

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

      BEK en KEK

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId  -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -VolumeType Data
      
    • Voor VM zonder Azure AD: gebruik de volgende opdracht om handmatig versleuteling in te stellen voor de gegevensschijven.

      Als tijdens de uitvoering van de opdracht om AADClientID wordt gevraagd, moet u uw Azure PowerShell.

      Alleen BEK

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

      BEK en KEK

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

Notitie

Zorg ervoor dat u handmatig de JASON-bestanden verwijdert die zijn gemaakt als onderdeel van het herstel van de versleutelde VM-schijf.

Bestanden terugzetten vanuit een back-up van een Azure-VM

Naast het herstellen van schijven kunt u ook afzonderlijke bestanden herstellen vanuit een back-up van een Azure-VM. De functionaliteit voor het herstellen van bestanden biedt toegang tot alle bestanden in een herstelpunt. Beheer de bestanden via Verkenner zoals u dat zou doen voor normale bestanden.

De basisstappen voor het herstellen van een bestand vanuit een back-up van een Azure-VM zijn:

  • Selecteer de VM
  • Een herstelpunt kiezen
  • De schijven van het herstelpunt monteren
  • De vereiste bestanden kopiëren
  • De schijf ontkoppelen

Selecteer de VM (bij het herstellen van de VM)

Als u het PowerShell-object wilt op halen dat het juiste back-upitem identificeert, start u vanuit de container in de kluis en werkt u omlaag in de objecthiërarchie. Als u de container wilt selecteren die de VM vertegenwoordigt, gebruikt u de cmdlet Get-AzRecoveryServicesBackupContainer en geeft u deze door aan de 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

Een herstelpunt kiezen (bij het herstellen van de VM)

Gebruik de cmdlet Get-AzRecoveryServicesBackupRecoveryPoint om alle herstelpunten voor het back-upitem weer te geven. Kies vervolgens het herstelpunt dat u wilt herstellen. Als u niet zeker weet welk herstelpunt u moet gebruiken, is het een goede gewoonte om het meest recente RecoveryPointType = AppConsistent-punt in de lijst te kiezen.

In het volgende script is de variabele, $rp, een matrix met herstelpunten voor het geselecteerde back-upitem van de afgelopen zeven dagen. De matrix wordt in omgekeerde volgorde gesorteerd met het laatste herstelpunt op index 0. Gebruik standaard indexering van PowerShell-matrices om het herstelpunt te kiezen. In het voorbeeld selecteert $rp [0] het meest recente herstelpunt.

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

De uitvoer lijkt op die in het volgende voorbeeld:

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

De schijven van het herstelpunt monteren

Gebruik de cmdlet Get-AzRecoveryServicesBackupRPMountScript om het script op te halen om alle schijven van het herstelpunt te monteren.

Notitie

De schijven worden gekoppeld als iSCSI-gekoppelde schijven op de computer waarop het script wordt uitgevoerd. Het maken van een bevestiging vindt onmiddellijk plaats en er worden geen kosten in rekening gebracht.

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

De uitvoer lijkt op die in het volgende voorbeeld:

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

Voer het script uit op de computer waarop u de bestanden wilt herstellen. Als u het script wilt uitvoeren, moet u het opgegeven wachtwoord invoeren. Nadat de schijven zijn gekoppeld, gebruikt u Windows Verkenner om door de nieuwe volumes en bestanden te bladeren. Zie het artikel Back-up, Bestanden herstellen vanuit back-up van virtuele Azure-machinesvoor meer informatie.

De schijven ontkoppelen

Nadat de vereiste bestanden zijn gekopieerd, gebruikt u Disable-AzRecoveryServicesBackupRPMountScript om de schijven te ontkoppelen. Zorg ervoor dat u de schijven ontkoppelt, zodat de toegang tot de bestanden van het herstelpunt wordt verwijderd.

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

Volgende stappen

Als u liever PowerShell gebruikt om verbinding te maken met uw Azure-resources, bekijkt u het PowerShell-artikel Deploy and Manage Backup for Windows Server (Back-up implementeren en beheren voor Windows Server). Als u DPM-back-ups beheert, zie dan het artikel Deploy and Manage Backup for DPM (Back-upimplementeren en beheren voor DPM).