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

In dit artikel wordt beschreven hoe u een back-up maakt van een Virtuele Azure-machine in een Azure Backup Recovery Services-kluis met behulp van PowerShell-cmdlets.

Azure Backup biedt onafhankelijke en geïsoleerde back-ups om bescherming te bieden tegen onbedoelde vernietiging van de gegevens op uw VM's. Back-ups worden in een Recovery Services-kluis opgeslagen waarin het beheer van herstelpunten is ingebouwd. Het is eenvoudig om te configureren en de schaal aan te passen, back-ups worden geoptimaliseerd en u kunt, indien nodig, eenvoudig herstelbewerkingen uitvoeren.

Voordat u een back-up kunt maken van een virtuele machine (of als u deze wilt 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.
  • Controleer de PowerShell-objecthiërarchie voor Recovery Services.

Recovery Services-objecthiërarchie

De objecthiërarchie wordt samengevat in het volgende diagram.

Disgram shows the Recovery Services object hierarchy.

Raadpleeg de naslaginformatie voor de Az.RecoveryServices-cmdletin de Azure-bibliotheek.

Instellen en registreren

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. 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. De nieuwste versie van PowerShell downloaden

  2. Zoek de Beschikbare Azure Backup PowerShell-cmdlets 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. Het is niet de volledige lijst met cmdlets.

    Screenshot shows the list of Recovery Services.

  3. Meld u aan bij uw Azure-account met Verbinding maken-AzAccount. Met deze cmdlet wordt u gevraagd om uw accountreferenties op te geven op een webpagina:

    • U kunt ook uw accountreferenties opnemen als een 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 de tenant-id of primaire domeinnaam van de tenant. 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 voor het eerst 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 de RegistrationState worden gewijzigd in Geregistreerd. Als dat niet het gaat, voert u de cmdlet Register-AzResourceProvider opnieuw uit.

Een Recovery Services-kluis maken

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

  1. De Recovery Services-kluis is een Resource Manager-resource, dus u moet deze in 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 opslagredundantie op dat moet worden gebruikt. U kunt lokaal redundante opslag (LRS), geografisch redundante opslag (GRS) of zone-redundante opslag (ZRS) gebruiken. In het volgende voorbeeld ziet u de optie -BackupStorageRedundancy die is 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 Locatie 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 toepast, stelt u de kluiscontext (het type gegevens dat in de kluis is beveiligd) in en controleert u het beveiligingsbeleid. Het beveiligingsbeleid is het schema wanneer de back-uptaken worden uitgevoerd en hoe lang elke back-upmomentopname wordt bewaard.

Kluiscontext instellen

Voordat u beveiliging inschakelt op een virtuele machine, 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 ingesteld. testvault

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

De kluis-id ophalen

We zijn van plan om de kluiscontextinstelling af te schalen in overeenstemming met de Azure PowerShell-richtlijnen. In plaats daarvan kunt u de kluis-id opslaan of ophalen en deze doorgeven aan relevante opdrachten. 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

Opslagreplicatie-instellingen wijzigen

De opdracht Set-AzRecoveryServicesBackupProperty gebruiken om de opslagreplicatieconfiguratie van de 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 virtuele machine snel te beveiligen en het beleid later te bewerken met verschillende details.

Gebruik Get-AzRecoveryServicesBackupProtectionPolicy om het beveiligingsbeleid weer te geven dat beschikbaar is in de kluis. U kunt deze cmdlet gebruiken om een specifiek beleid op te halen of om het beleid weer te geven dat is gekoppeld aan een workloadtype. In het volgende voorbeeld wordt beleid opgehaald voor het workloadtype AzureVM.

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 Azure Portal, wordt de tijd aangepast aan uw lokale tijdzone.

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

Standaard wordt een begintijd gedefinieerd in het planningsbeleidsobject. Gebruik het volgende voorbeeld om de begintijd te wijzigen in de gewenste begintijd. De gewenste begintijd moet ook in UTC staan. In het volgende voorbeeld wordt ervan uitgegaan 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 moet de begintijd in slechts 30 minuten veelvouden opgeven. In het bovenstaande voorbeeld kan dit alleen '01:00:00' of '02:30:00' zijn. De begintijd kan niet '01:15:00' zijn

In het volgende voorbeeld worden het planningsbeleid en het bewaarbeleid opgeslagen 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 te schakelen. 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 moment dat is gedefinieerd in het beleidsschema.

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 op basis van of de virtuele machine is versleuteld en welk type versleuteling.

De beveiliging op niet-versleutelde Resource Manager-VM'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 wilt inschakelen voor versleutelde VM's (versleuteld met BEK en KEK), moet u de Azure Backup-service machtigen 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 wilt inschakelen op versleutelde VM's (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 ff281ffe-705c-4f53-9f37-a40e6f2c68f3 voor de parameter ServicePrincipalName in de cmdlet Set-AzKeyVaultAccessPolicy .

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

Een back-uptaak bewaken

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

$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. Dit is onnodige extra code. 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 standaard een begintijd toegewezen. In de volgende voorbeelden ziet u hoe u de begintijd van een beveiligingsbeleid wijzigt.

$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

Momentopnameretentie configureren

Notitie

Vanaf Azure PowerShell versie 1.6.0 kunt u de bewaarperiode voor momentopnamen in het beleid bijwerken 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 wekelijks back-upbeleid is de periode ingesteld op 5 en kan deze niet worden gewijzigd.

Azure Backup-resourcegroep 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 momentopnamen.

Raadpleeg de documentatie van de Azure Backup-resourcegroep voor virtual machines voor meer informatie over regels voor het maken van resourcegroepen en andere relevante details.

$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 een mogelijkheid om selectief schijven uit te sluiten of op te nemen die nuttig zijn in deze scenario's. Als de virtuele machine al is beveiligd door azure VM-back-up en als er een back-up van alle schijven wordt gemaakt, kunt u de beveiliging zo wijzigen dat schijven selectief worden opgenomen of uitgesloten, zoals hier wordt vermeld.

Een back-up activeren

Gebruik Backup-AzRecoveryServicesBackupItem om een back-uptaak 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 60 dagen 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 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 item waarvan een back-up is gemaakt wijzigen van Policy1 in Policy2. Als u wilt schakelen tussen beleidsregels voor een back-upitem, haalt u het relevante beleid op en maakt u een back-up van het item en gebruikt u de opdracht Enable-AzRecoveryServices met 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 totdat de back-up is geconfigureerd 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. Hierdoor worden de geplande back-ups gestopt, maar er wordt tot nu toe een back-up gemaakt van de gegevens.

$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 behouden blijven, kunt u de beveiliging nogmaals hervatten. U moet een beleid toewijzen voor de vernieuwde beveiliging. De cmdlet is hetzelfde als 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 VIRTUELE machine met behulp van Azure Portal en het herstellen van een VIRTUELE machine 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, raadpleegt u de sectie De VIRTUELE machine maken op basis van herstelde schijven. Als u de hele virtuele machine niet wilt herstellen, maar een paar bestanden van een Back-up van een Azure-VM wilt herstellen of herstellen, 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 beneden RecoveryServicesVault naar de BackupRecoveryPoint.

Screenshot shows the BackupContainer listed by Recovery Services object hierarchy.

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

De basisstappen voor het herstellen van een Virtuele Azure-machine zijn:

  • Selecteer de VM.
  • Kies een herstelpunt.
  • Herstel de schijven.
  • Maak de VIRTUELE machine op basis van opgeslagen schijven.

U kunt nu ook PowerShell gebruiken om de back-upinhoud rechtstreeks te herstellen naar een virtuele machine (origineel/nieuw), zonder de bovenstaande stappen afzonderlijk uit te voeren. Zie Gegevens herstellen naar virtuele machine met behulp van PowerShell voor meer informatie.

Selecteer de VIRTUELE machine (bij het herstellen van bestanden)

Als u het PowerShell-object wilt ophalen dat het juiste back-upitem identificeert, begint u vanuit de container in de kluis en werkt u naar beneden in de objecthiërarchie. Als u de container wilt selecteren die de VIRTUELE machine vertegenwoordigt, gebruikt u de cmdlet Get-AzRecoveryServicesBackupContainer en sluist u deze naar 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

Kies een herstelpunt (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 wilt gebruiken, is het raadzaam 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 PowerShell-matrixindexering 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 geïdentificeerd, gebruikt u dit als de waarde voor de parameter -RecoveryPoint . In het bovenstaande voorbeeld is $rp[0] het herstelpunt dat moet worden gebruikt. 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 ondersteunde VIRTUELE machine beheerde schijven heeft en u deze wilt herstellen als beheerde schijven, hebben we de mogelijkheid geïntroduceerd vanuit de Azure PowerShell RM-module v 6.7.0. verder.

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

Belangrijk

Het wordt sterk aanbevolen om de parameter TargetResourceGroupName te gebruiken voor het herstellen van beheerde schijven, omdat dit resulteert in 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 als niet-beheerde schijven te herstellen, geeft u deze parameter niet op en maakt u de intentie duidelijk door de -RestoreAsUnmanagedDisks parameter op te geven. De -RestoreAsUnmanagedDisks parameter is beschikbaar vanaf Azure PowerShell 3.7.0 en hoger. 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 totdat de hersteltaak is voltooid.

Wait-AzRecoveryServicesBackupJob -Job $restorejob -Timeout 43200

Zodra de hersteltaak is voltooid, gebruikt u de cmdlet Get-AzRecoveryServicesBackupJobDetail om de details van de herstelbewerking op te halen. De eigenschap JobDetails bevat de informatie die nodig is om de VIRTUELE machine opnieuw op 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

Met Azure Backup kunt u ook beheerde identiteit (MSI) gebruiken tijdens het herstellen om toegang te krijgen tot opslagaccounts waarnaar schijven moeten worden hersteld. Deze optie wordt momenteel alleen ondersteund voor herstel 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 opdracht Restore-AzRecoveryServicesBackupItem. Als u een door de gebruiker toegewezen beheerde identiteit wilt gebruiken, geeft u een parameter -UserAssignedIdentityId door met de Azure Resource Manager-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 volledige back-upset. Geef de vereiste schijf-LUN's op als parameter om ze alleen te herstellen in plaats van de volledige set, zoals hier wordt beschreven.

Belangrijk

Eén moet selectief een back-up maken van schijven om schijven selectief te herstellen. Meer informatie vindt u hier.

Nadat u de schijven hebt hersteld, gaat u naar de volgende sectie om de virtuele machine 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 herstelbewerking uit te voeren. Voer de volgende stappen uit om een herstelbewerking in de secundaire regio te activeren:

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

  2. Selecteer het juiste back-upitem dat u wilt herstellen.

  3. Selecteer het juiste herstelpunt in de secundaire regio die u wilt gebruiken om de herstelbewerking 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 -RestoreToSecondaryRegion parameter om een herstelbewerking in de 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 hersteltaak te bewaken.

    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
    

Zoneoverschrijdende herstelbewerking

U kunt vastgemaakte VM's in een Azure-zone herstellen in alle beschikbaarheidszones van dezelfde regio.

Als u een VM wilt herstellen naar een andere zone, geeft u de TargetZoneNumber parameter op in de cmdlet Restore-AzRecoveryServicesBackupItem .

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

De uitvoer ziet er ongeveer als volgt uit:

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

Cross-zoneal restore wordt alleen ondersteund in scenario's waarin:

  • De bron-VM is vastgemaakt aan de zone en is NIET versleuteld.
  • Het herstelpunt is alleen aanwezig in de kluislaag. Alleen momentopnamen of momentopnamen en kluislaag worden niet ondersteund.
  • De hersteloptie is het maken van een nieuwe VIRTUELE machine of het herstellen van schijven. De optie Schijven vervangen de brongegevens; Daarom is de optie beschikbaarheidszone niet van toepassing.
  • Vm/schijven maken in dezelfde regio wanneer de opslagredundantie van de kluis ZRS is. Houd er rekening mee dat het niet werkt als de opslagredundantie van de kluis GRS is, ook al is de bron-VM zone vastgemaakt.
  • Vm's/schijven maken in de gekoppelde regio wanneer opslagredundantie van de kluis is ingeschakeld voor herstel tussen regio's en als de gekoppelde regio zones ondersteunt.

Schijven in Azure VM vervangen

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

Een virtuele machine maken op basis van herstelde schijven

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

Notitie

  1. AzureAz-module 3.0.0 of hoger is vereist.
  2. Als u versleutelde VM's van herstelde schijven wilt maken, moet uw Azure-rol gemachtigd zijn om de actie Microsoft.KeyVault/vaults/deploy/action uit te voeren. Als uw rol niet over deze machtiging beschikt, 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 ophalen die u rechtstreeks kunt gebruiken om een nieuwe virtuele machine te maken. YOu heeft geen verschillende PowerShell-cmdlets nodig om beheerde/onbeheerde VM's te maken die zijn versleuteld/niet-versleuteld.

Een virtuele machine 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. Pak eerst de sjabloonnaam 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 VIRTUELE machine te maken, zoals hier wordt uitgelegd.

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

Een VIRTUELE machine maken met behulp van het configuratiebestand

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

Notitie

Het wordt ten zeerste aanbevolen om de hierboven beschreven implementatiesjabloon te gebruiken om een VIRTUELE machine te maken. Deze sectie (punten 1-6) wordt binnenkort afgeschaft.

  1. Voer een query uit op de herstelde schijfeigenschappen 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 Storage-context 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 Microsoft Entra ID (alleen BEK): voor niet-beheerde, versleutelde VM's met Microsoft Entra-id (alleen versleuteld met BEK), moet u het geheim herstellen naar de sleutelkluis voordat u schijven kunt koppelen. Zie voor meer informatie een versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt. In het volgende voorbeeld ziet u hoe u besturingssysteem- en gegevensschijven koppelt voor versleutelde VM's. Wanneer u de besturingssysteemschijf instelt, 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 Microsoft Entra ID (BEK en KEK): voor niet-beheerde, versleutelde VM's met Microsoft Entra-id (versleuteld met BEK en KEK), herstelt u de sleutel en het geheim naar 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 Microsoft Entra ID (alleen BEK): voor niet-beheerde, versleutelde VM's zonder Microsoft Entra-id (alleen versleuteld met BEK), als bronsleutelkluis /geheim niet beschikbaar is, herstelt u de geheimen niet 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 voor de herstelde besturingssysteem-blob (deze stap is niet vereist voor een gegevensblob). De $dekurl kan worden opgehaald uit de herstelde keyVault.

    Het volgende script moet alleen worden uitgevoerd wanneer de bronsleutelkluis/het 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 blob van het besturingssysteem, koppelt u de schijven met behulp van het onderstaande script.

    Als de bronsleutelkluis/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 Microsoft Entra ID (BEK en KEK): voor niet-beheerde, versleutelde VM's zonder Microsoft Entra-id (versleuteld met BEK & KEK), als bronsleutelkluis /sleutel/geheim niet beschikbaar is, herstelt u de sleutel en geheimen niet 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 voor de herstelde besturingssysteem-blob (deze stap is niet vereist voor een gegevensblob). De $dekurl en $kekurl kunnen worden opgehaald uit de herstelde sleutelkluis.

    Het onderstaande script moet alleen worden uitgevoerd wanneer de bronsleutelkluis/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 besturingssysteemblob, koppelt u de schijven met behulp van het onderstaande script.

    Als de bronsleutelKluis/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 : voor beheerde niet-versleutelde VM's koppelt u de herstelde beheerde schijven. Zie Een gegevensschijf koppelen aan een Windows-VM met behulp van PowerShell voor uitgebreide informatie.

    • Beheerde en versleutelde VM's met Microsoft Entra ID (alleen BEK): voor beheerde versleutelde VM's met Microsoft Entra-id (alleen versleuteld met BEK), koppelt u de herstelde beheerde schijven. Zie Een gegevensschijf koppelen aan een Windows-VM met behulp van PowerShell voor uitgebreide informatie.

    • Beheerde en versleutelde VM's met Microsoft Entra ID (BEK en KEK): voor beheerde versleutelde VM's met Microsoft Entra-id (versleuteld met BEK en KEK), koppelt u de herstelde beheerde schijven. Zie Een gegevensschijf koppelen aan een Windows-VM met behulp van PowerShell voor uitgebreide informatie.

    • Beheerde en versleutelde VM's zonder Microsoft Entra-id (alleen BEK): voor beheerde, versleutelde VM's zonder Microsoft Entra-id (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 kan worden opgehaald uit de herstelde keyVault.

    Het onderstaande script moet alleen worden uitgevoerd wanneer de bronsleutelkluis/het 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, raadpleegt u Een gegevensschijf koppelen aan een Windows-VM met behulp van PowerShell om de herstelde beheerde schijven te koppelen.

    • Beheerde en versleutelde VM's zonder Microsoft Entra-id (BEK en KEK): voor beheerde, versleutelde VM's zonder Microsoft Entra-id (versleuteld met BEK & KEK), als bronsleutelkluis /sleutel/geheim niet beschikbaar is, herstelt u de sleutel en geheimen niet 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 sleutelkluis.

    Het volgende script moet alleen worden uitgevoerd wanneer de bronsleutelKluis/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, raadpleegt u Een gegevensschijf koppelen aan een Windows-VM met 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 gepusht, worden de gegevensschijven gemarkeerd als niet-versleuteld. Dit is dus verplicht voor de onderstaande stappen:

    • Voor VM met Microsoft Entra-id : gebruik de volgende opdracht om handmatig versleuteling in te schakelen 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 Microsoft Entra-id : gebruik de volgende opdracht om handmatig versleuteling in te schakelen voor de gegevensschijven.

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

      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 de JASON-bestanden die zijn gemaakt als onderdeel van het versleutelde VM-herstelschijfproces handmatig verwijdert.

Bestanden terugzetten vanuit een back-up van een Virtuele Azure-machine

Naast het herstellen van schijven kunt u ook afzonderlijke bestanden herstellen vanuit een Back-up van een Virtuele Azure-machine. De functionaliteit voor herstelbestanden biedt toegang tot alle bestanden in een herstelpunt. Beheer de bestanden via Bestandenverkenner zoals u zou doen voor normale bestanden.

De basisstappen voor het herstellen van een bestand vanuit een Back-up van een Virtuele Azure-machine zijn:

  • Selecteer de VIRTUELE machine
  • Een herstelpunt kiezen
  • De schijven van het herstelpunt koppelen
  • De vereiste bestanden kopiëren
  • De schijf ontkoppelen

Selecteer de VIRTUELE machine (bij het herstellen van de VM)

Als u het PowerShell-object wilt ophalen dat het juiste back-upitem identificeert, begint u vanuit de container in de kluis en werkt u naar beneden in de objecthiërarchie. Als u de container wilt selecteren die de VIRTUELE machine vertegenwoordigt, gebruikt u de cmdlet Get-AzRecoveryServicesBackupContainer en sluist u deze naar 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

Kies een herstelpunt (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 wilt gebruiken, is het raadzaam 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 PowerShell-matrixindexering 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 koppelen

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

Notitie

De schijven worden gekoppeld als iSCSI-gekoppelde schijven op de computer waarop het script wordt uitgevoerd. Het koppelen 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 Bestandenverkenner om door de nieuwe volumes en bestanden te bladeren. Zie het artikel Backup, Bestanden herstellen van back-up van virtuele Azure-machines voor meer informatie.

De schijven ontkoppelen

Nadat de vereiste bestanden zijn gekopieerd, gebruikt u Disable-AzRecoveryServicesBackupRPMountScript om de schijven los te koppelen. 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

Gegevens herstellen naar een virtuele machine met behulp van PowerShell

U kunt nu gegevens rechtstreeks herstellen naar de oorspronkelijke/alternatieve VM zonder meerdere stappen uit te voeren.

Gegevens herstellen naar de oorspronkelijke VM

$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

Met de laatste opdracht wordt een oorspronkelijke herstelbewerking voor de locatie geactiveerd om de gegevens in-place op de bestaande VM te herstellen.

Gegevens herstellen naar een zojuist gemaakte VIRTUELE machine

$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

Met de laatste opdracht wordt een herstelbewerking voor een alternatieve locatie geactiveerd om een nieuwe VM te maken in Target_RG resourcegroep volgens de invoer die is opgegeven door de parameters TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. Dit zorgt ervoor dat de gegevens worden hersteld in de vereiste VM, het virtuele netwerk en het subnet.

Volgende stappen

Als u liever PowerShell gebruikt om contact op te nemen met uw Azure-resources, raadpleegt u het PowerShell-artikel Back-up implementeren en beheren voor Windows Server. Als u DPM-back-ups beheert, raadpleegt u het artikel Back-up implementeren en beheren voor DPM.