Säkerhetskopiera och återställa virtuella Azure-datorer med Azure PowerShell

Den här artikeln beskriver hur du säkerhetskopierar och återställer en virtuell Azure-dator i ett Azure Backup Recovery Services-valv med hjälp av PowerShell-cmdletar.

Azure Backup tillhandahåller oberoende och isolerade säkerhetskopior för att skydda mot oavsiktlig förstöring av data på dina virtuella datorer. Säkerhetskopior lagras i ett Recovery Services-valv med inbyggd hantering av återställningspunkter. Konfiguration och skalning är enkla, säkerhetskopieringar optimeras och du kan enkelt återställa efter behov.

Innan du kan säkerhetskopiera (eller skydda) en virtuell dator måste du slutföra förutsättningarna för att förbereda miljön för att skydda dina virtuella datorer.

Innan du börjar

  • Läs mer om Recovery Services-valv.
  • Granska arkitekturen för säkerhetskopiering av virtuella Azure-datorer, lär dig mer om säkerhetskopieringsprocessen och granska support, begränsningar och förutsättningar.
  • Granska PowerShell-objekthierarkin för Recovery Services.

Objekthierarki för Recovery Services

Objekthierarkin sammanfattas i följande diagram.

Disgram shows the Recovery Services object hierarchy.

Granska referensreferensen för Az.RecoveryServices-cmdleteni Azure-biblioteket.

Konfigurera och registrera

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Så här börjar du:

  1. Ladda ned den senaste versionen av PowerShell

  2. Leta reda på tillgängliga Azure Backup PowerShell-cmdletar genom att skriva följande kommando:

    Get-Command *azrecoveryservices*
    

    Alias och cmdletar för Azure Backup, Azure Site Recovery och Recovery Services-valvet visas. Följande bild är ett exempel på vad du ser. Det är inte den fullständiga listan över cmdletar.

    Screenshot shows the list of Recovery Services.

  3. Logga in på ditt Azure-konto med hjälp av Anslut-AzAccount. Den här cmdleten visar en webbsida där du uppmanas att ange dina autentiseringsuppgifter för kontot:

    • Alternativt kan du inkludera dina kontoautentiseringsuppgifter som en parameter i cmdleten Anslut-AzAccount med parametern -Credential.
    • Om du är en CSP-partner som arbetar för en klientorganisation anger du kunden som klient genom att använda deras klient-ID eller klientorganisationens primära domännamn. Till exempel: Anslut-AzAccount -Tenant "fabrikam.com"
  4. Associera den prenumeration som du vill använda med kontot, eftersom ett konto kan ha flera prenumerationer:

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  5. Om du använder Azure Backup för första gången måste du använda cmdleten Register-AzResourceProvider för att registrera Azure Recovery Service-providern med din prenumeration.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  6. Du kan kontrollera att providrar har registrerats med hjälp av följande kommandon:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    

    I kommandoutdata bör RegistrationState ändras till Registrerad. Annars kör du bara cmdleten Register-AzResourceProvider igen.

Skapa ett Recovery Services-valv

Följande steg leder dig genom att skapa ett Recovery Services-valv. Ett Recovery Services-valv skiljer sig från ett Backup-valv.

  1. Recovery Services-valvet är en Resource Manager-resurs, så du måste placera det i en resursgrupp. Du kan använda en befintlig resursgrupp eller skapa en resursgrupp med cmdleten New-AzResourceGroup . När du skapar en resursgrupp anger du namnet och platsen för resursgruppen.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. Använd cmdleten New-AzRecoveryServicesVault för att skapa Recovery Services-valvet. Se till att ange samma plats för valvet som användes för resursgruppen.

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. Ange vilken typ av lagringsredundans som ska användas. Du kan använda lokalt redundant lagring (LRS), geo-redundant lagring (GRS) eller zonredundant lagring (ZRS). I följande exempel visas alternativet -BackupStorageRedundancy för testvault inställt på GeoRedundant.

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

    Dricks

    Många Azure Backup-cmdletar kräver Recovery Services-valvobjekt som indata. Därför är det praktiskt att lagra Backup Recovery Services-valvobjektet i en variabel.

Visa valven i en prenumeration

Om du vill visa alla valv i prenumerationen använder du Get-AzRecoveryServicesVault:

Get-AzRecoveryServicesVault

Utdata liknar följande exempel. Observera att associerade ResourceGroupName och Location tillhandahålls.

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

Säkerhetskopiera virtuella Azure-datorer

Använd ett Recovery Services-valv för att skydda dina virtuella datorer. Innan du tillämpar skyddet anger du valvkontexten (typen av data som skyddas i valvet) och verifierar skyddsprincipen. Skyddsprincipen är schemat när säkerhetskopieringsjobben körs och hur länge varje ögonblicksbild av säkerhetskopian behålls.

Ange valvkontext

Innan du aktiverar skydd på en virtuell dator använder du Set-AzRecoveryServicesVaultContext för att ange valvkontexten. När valvet sammanhang är inställt gäller det alla efterkommande cmdletar. I följande exempel anges valvkontexten för valvet, testvault.

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

Hämta valv-ID:t

Vi planerar att inaktuella inställningen för valvkontexten i enlighet med Azure PowerShell-riktlinjerna. I stället kan du lagra eller hämta valv-ID:t och skicka det till relevanta kommandon. Om du inte har angett valvkontexten eller vill ange vilket kommando som ska köras för ett visst valv skickar du valv-ID:t som "-vaultID" till alla relevanta kommandon enligt följande:

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

Eller

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

Ändra lagringsreplikeringsinställningar

Använd kommandot Set-AzRecoveryServicesBackupProperty för att ange lagringsreplikeringskonfigurationen för valvet till LRS/GRS

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

Kommentar

Lagringsredundans kan bara ändras om det inte finns några säkerhetskopieringsobjekt som skyddas i valvet.

Skapa en skyddsprincip

När du skapar ett Recovery Services-valv medföljer standardskydd och principer för kvarhållning. Principen för standardskydd utlöser ett säkerhetsjobb varje dag vid en viss tidpunkt. Principen för standardskydd håller kvar den dagliga återställningspunkten i 30 dagar. Du kan använda standardprincipen för att snabbt skydda den virtuella datorn och redigera principen senare med annan information.

Använd Get-AzRecoveryServicesBackupProtectionPolicy för att visa de skyddsprinciper som är tillgängliga i valvet. Du kan använda den här cmdleten för att hämta en specifik princip eller för att visa de principer som är associerade med en arbetsbelastningstyp. I följande exempel hämtas principer för arbetsbelastningstyp, AzureVM.

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

Utdata ser ut ungefär så här:

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

Kommentar

Tidszonen för fältet BackupTime i PowerShell är UTC. Men när säkerhetskopieringstiden visas i Azure-portalen justeras tiden till din lokala tidszon.

En princip för säkerhetskopieringsskydd är associerad med minst en kvarhållningsprincip. En kvarhållningsprincip definierar hur länge en återställningspunkt sparas innan den tas bort.

Som standard definieras en starttid i objektet Schemalägg princip. Använd följande exempel för att ändra starttiden till önskad starttid. Önskad starttid bör också vara i UTC. I följande exempel förutsätts att önskad starttid är 01:00 UTC för dagliga säkerhetskopieringar.

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

Viktigt!

Du behöver bara ange starttiden på 30 minuters multiplar. I exemplet ovan kan det bara vara "01:00:00" eller "02:30:00". Starttiden får inte vara "01:15:00"

I följande exempel lagras schemaprincipen och kvarhållningsprincipen i variabler. I exemplet används dessa variabler för att definiera parametrarna när du skapar en skyddsprincip, NewPolicy.

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

Utdata ser ut ungefär så här:

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

Aktivera skydd

När du har definierat skyddsprincipen måste du fortfarande aktivera principen för ett objekt. Använd Enable-AzRecoveryServicesBackupProtection för att aktivera skydd. För att aktivera skydd krävs två objekt – objektet och principen. När principen har associerats med valvet utlöses arbetsflödet för säkerhetskopiering vid den tidpunkt som definieras i principschemat.

Viktigt!

När du använder PowerShell för att aktivera säkerhetskopiering för flera virtuella datorer samtidigt kontrollerar du att en enskild princip inte har fler än 100 virtuella datorer associerade med den. Detta är en rekommenderad metod. För närvarande blockeras inte PowerShell-klienten uttryckligen om det finns fler än 100 virtuella datorer, men kontrollen planeras att läggas till i framtiden.

Följande exempel aktiverar skydd för objektet, V2VM, med hjälp av principen NewPolicy. Exemplen skiljer sig åt beroende på om den virtuella datorn är krypterad och vilken typ av kryptering.

Så här aktiverar du skyddet på icke-krypterade virtuella Resource Manager-datorer:

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

Om du vill aktivera skyddet på krypterade virtuella datorer (krypterade med BEK och KEK) måste du ge Azure Backup-tjänsten behörighet att läsa nycklar och hemligheter från nyckelvalvet.

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

Om du vill aktivera skyddet på krypterade virtuella datorer (endast krypterat med BEK) måste du ge Azure Backup-tjänsten behörighet att läsa hemligheter från nyckelvalvet.

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

Kommentar

Om du använder Azure Government-molnet använder du värdet ff281ffe-705c-4f53-9f37-a40e6f2c68f3 för parametern ServicePrincipalName i cmdleten Set-AzKeyVaultAccessPolicy .

Om du selektivt vill säkerhetskopiera några diskar och exkludera andra som nämns i dessa scenarier kan du konfigurera skydd och endast säkerhetskopiera relevanta diskar enligt beskrivningen här.

Övervaka ett säkerhetskopieringsjobb

Du kan övervaka långvariga åtgärder, till exempel säkerhetskopieringsjobb, utan att använda Azure-portalen. Om du vill hämta status för ett pågående jobb använder du cmdleten Get-AzRecoveryservicesBackupJob . Den här cmdleten hämtar säkerhetskopieringsjobben för ett specifikt valv och det valvet anges i valvkontexten. I följande exempel hämtas status för ett pågående jobb som en matris och statusen lagras i variabeln $joblist.

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

Utdata ser ut ungefär så här:

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

Använd cmdleten Wait-AzRecoveryServicesBackupJob i stället för att avsöka jobben för slutförande , vilket är onödig ytterligare kod. Den här cmdleten pausar körningen tills antingen jobbet har slutförts eller det angivna tidsgränsvärdet har uppnåtts.

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

Hantera säkerhetskopior av virtuella Azure-datorer

Ändra en skyddsprincip

Om du vill ändra skyddsprincipen använder du Set-AzRecoveryServicesBackupProtectionPolicy för att ändra objekten SchedulePolicy eller RetentionPolicy.

Ändra schemalagd tid

När du skapar en skyddsprincip tilldelas den som standard en starttid. I följande exempel visas hur du ändrar starttiden för en skyddsprincip.

$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

Ändra kvarhållning

I följande exempel ändras kvarhållningen av återställningspunkten till 365 dagar.

$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

Konfigurera omedelbar kvarhållning av ögonblicksbilder

Kommentar

Från Azure PowerShell version 1.6.0 och senare kan man uppdatera kvarhållningsperioden för ögonblicksbilder i princip med hjälp av PowerShell

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

Standardvärdet är 2. Du kan ange värdet med minst 1 och högst 5. För veckovisa säkerhetskopieringsprinciper är perioden inställd på 5 och kan inte ändras.

Skapa En Azure Backup-resursgrupp under kvarhållning av ögonblicksbilder

Kommentar

Från Azure PowerShell version 3.7.0 och senare kan man skapa och redigera resursgruppen som skapats för att lagra omedelbara ögonblicksbilder.

Mer information om hur du skapar regler för resursgrupper och annan relevant information finns i dokumentationen om Azure Backup-resursgruppen för virtuella datorer .

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

Undanta diskar för en skyddad virtuell dator

Säkerhetskopiering av virtuella Azure-datorer ger möjlighet att selektivt exkludera eller inkludera diskar som är användbara i dessa scenarier. Om den virtuella datorn redan skyddas av säkerhetskopiering av virtuella Azure-datorer och om alla diskar säkerhetskopieras kan du ändra skyddet så att det selektivt inkluderar eller exkluderar diskar som anges här.

Utlös en säkerhetskopia

Använd Backup-AzRecoveryServicesBackupItem för att utlösa ett säkerhetskopieringsjobb. Om det är den första säkerhetskopian är det en fullständig säkerhetskopia. Efterföljande säkerhetskopior tar en inkrementell kopia. I följande exempel tas en vm-säkerhetskopiering för att behållas i 60 dagar.

$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

Utdata ser ut ungefär så här:

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

Kommentar

Tidszonen för fälten StartTime och EndTime i PowerShell är UTC. Men när tiden visas i Azure-portalen justeras tiden till din lokala tidszon.

Ändra princip för säkerhetskopieringsobjekt

Du kan antingen ändra befintlig princip eller ändra principen för det säkerhetskopierade objektet från Princip1 till Princip2. Om du vill växla principer för ett säkerhetskopierat objekt hämtar du relevant princip och säkerhetskopierar objektet och använder kommandot Enable-AzRecoveryServices med säkerhetskopieringsobjektet som 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

Kommandot väntar tills den konfigurerade säkerhetskopieringen har slutförts och returnerar följande utdata.

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

Stoppa skydd

Behålla data

Om du vill stoppa skyddet kan du använda PowerShell-cmdleten Disable-AzRecoveryServicesBackupProtection . Detta stoppar de schemalagda säkerhetskopiorna, men de data som säkerhetskopieras tills nu behålls för alltid.

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

Återuppta säkerhetskopiering

Om skyddet stoppas och säkerhetskopieringsdata behålls kan du återuppta skyddet igen. Du måste tilldela en princip för det förnyade skyddet. Cmdleten är samma som för ändringsprincipen för säkerhetskopieringsobjekt.

$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

Ta bort säkerhetskopieringsdata

Om du vill ta bort lagrade säkerhetskopieringsdata i valvet helt lägger du till flaggan "-RemoveRecoveryPoints" i kommandot "inaktivera" skydd.

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

Återställa en virtuell Azure-dator

Det finns en viktig skillnad mellan att återställa en virtuell dator med hjälp av Azure-portalen och att återställa en virtuell dator med Hjälp av PowerShell. Med PowerShell slutförs återställningsåtgärden när diskarna och konfigurationsinformationen från återställningspunkten har skapats. Återställningsåtgärden skapar inte den virtuella datorn. Information om hur du skapar en virtuell dator från disk finns i avsnittet Skapa den virtuella datorn från återställde diskar. Om du inte vill återställa hela den virtuella datorn, men vill återställa eller återställa några filer från en säkerhetskopia av en virtuell Azure-dator, kan du läsa avsnittet filåterställning.

Dricks

Återställningsåtgärden skapar inte den virtuella datorn.

Följande bild visar objekthierarkin från RecoveryServicesVault ned till BackupRecoveryPoint.

Screenshot shows the BackupContainer listed by Recovery Services object hierarchy.

Om du vill återställa säkerhetskopierade data identifierar du det säkerhetskopierade objektet och återställningspunkten som innehåller tidpunktsdata. Använd Restore-AzRecoveryServicesBackupItem för att återställa data från valvet till ditt konto.

De grundläggande stegen för att återställa en virtuell Azure-dator är:

  • Välj VM.
  • Välj en återställningspunkt.
  • Återställ diskarna.
  • Skapa den virtuella datorn från lagrade diskar.

Nu kan du också använda PowerShell för att återställa säkerhetskopieringsinnehållet direkt till en virtuell dator (original/ny) utan att utföra stegen ovan separat. Mer information finns i Återställa data till en virtuell dator med PowerShell.

Välj den virtuella datorn (när du återställer filer)

Om du vill hämta PowerShell-objektet som identifierar rätt säkerhetskopieringsobjekt startar du från containern i valvet och arbetar dig ned i objekthierarkin. Om du vill välja den container som representerar den virtuella datorn använder du cmdleten Get-AzRecoveryServicesBackupContainer och dirigerar den till cmdleten Get-AzRecoveryServicesBackupItem .

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

Välj en återställningspunkt (när du återställer filer)

Använd cmdleten Get-AzRecoveryServicesBackupRecoveryPoint för att visa en lista över alla återställningspunkter för säkerhetskopieringsobjektet. Välj sedan återställningspunkten som ska återställas. Om du är osäker på vilken återställningspunkt du ska använda är det bra att välja den senaste RecoveryPointType = AppConsistent-punkten i listan.

I följande skript är variabeln $rp en matris med återställningspunkter för det valda säkerhetskopieringsobjektet från de senaste sju dagarna. Matrisen sorteras i omvänd ordning med den senaste återställningspunkten vid index 0. Använd standardindexering av PowerShell-matriser för att välja återställningspunkten. I exemplet väljer $rp[0] den senaste återställningspunkten.

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

Utdata ser ut ungefär så här:

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

Återställa diskarna

Använd cmdleten Restore-AzRecoveryServicesBackupItem för att återställa ett säkerhetskopieringsobjekts data och konfiguration till en återställningspunkt. När du har identifierat en återställningspunkt använder du den som värde för parametern -RecoveryPoint . I exemplet ovan var $rp[0] den återställningspunkt som skulle användas. I följande exempelkod är $rp[0] återställningspunkten som ska användas för att återställa disken.

Så här återställer du diskarna och konfigurationsinformationen:

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

Återställa hanterade diskar

Kommentar

Om den säkerhetskopierade virtuella datorn har hanterade diskar och du vill återställa dem som hanterade diskar har vi introducerat funktionen från Azure PowerShell RM-modulen v 6.7.0. och framåt.

Ange ytterligare en parameter TargetResourceGroupName för att ange den RG som hanterade diskar ska återställas till.

Viktigt!

Vi rekommenderar starkt att du använder parametern TargetResourceGroupName för att återställa hanterade diskar eftersom det resulterar i betydande prestandaförbättringar. Om den här parametern inte anges kan du inte dra nytta av funktionen för omedelbar återställning och återställningsåtgärden blir långsammare i jämförelse. Om syftet är att återställa hanterade diskar som ohanterade diskar anger du inte den här parametern och gör avsikten tydlig genom att ange parametern -RestoreAsUnmanagedDisks . Parametern -RestoreAsUnmanagedDisks är tillgänglig från Azure PowerShell 3.7.0 och senare. I framtida versioner är det obligatoriskt att ange någon av dessa parametrar för rätt återställningsupplevelse.

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

FILEN VMConfig.JSON återställs till lagringskontot och de hanterade diskarna återställs till den angivna mål-RG:n.

Utdata ser ut ungefär så här:

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

Använd cmdleten Wait-AzRecoveryServicesBackupJob för att vänta tills återställningsjobbet har slutförts.

Wait-AzRecoveryServicesBackupJob -Job $restorejob -Timeout 43200

När återställningsjobbet har slutförts använder du cmdleten Get-AzRecoveryServicesBackupJobDetail för att hämta information om återställningsåtgärden. Egenskapen JobDetails har den information som behövs för att återskapa den virtuella datorn.

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

Använda hanterad identitet för att återställa diskar

Med Azure Backup kan du också använda hanterad identitet (MSI) under återställningsåtgärden för att få åtkomst till lagringskonton där diskar måste återställas till. Det här alternativet stöds för närvarande endast för återställning av hanterade diskar.

Om du vill använda valvets systemtilldelade hanterade identitet för att återställa diskar skickar du ytterligare en flagga – UseSystemAssignedIdentity till kommandot Restore-AzRecoveryServicesBackupItem. Om du vill använda en användartilldelad hanterad identitet skickar du parametern -UserAssignedIdentityId med Azure Resource Manager-ID:t för valvets hanterade identitet som värdet för parametern. Läs den här artikeln om du vill lära dig hur du aktiverar hanterad identitet för dina valv.

Återställa selektiva diskar

En användare kan selektivt återställa några diskar i stället för hela den säkerhetskopierade uppsättningen. Ange de nödvändiga disk-LUN:erna som parameter för att bara återställa dem i stället för hela uppsättningen som dokumenteras här.

Viktigt!

Man måste selektivt säkerhetskopiera diskar för att selektivt återställa diskar. Mer information finns här.

När du har återställt diskarna går du till nästa avsnitt för att skapa den virtuella datorn.

Återställa diskar till en sekundär region

Om återställning mellan regioner är aktiverat i valvet som du har skyddat dina virtuella datorer med, replikeras säkerhetskopierade data till den sekundära regionen. Du kan använda säkerhetskopierade data för att utföra en återställning. Utför följande steg för att utlösa en återställning i den sekundära regionen:

  1. Hämta valv-ID :t som dina virtuella datorer är skyddade med.

  2. Välj rätt säkerhetskopieringsobjekt som ska återställas.

  3. Välj lämplig återställningspunkt i den sekundära region som du vill använda för att utföra återställningen.

    Kör det här kommandot för att slutföra det här steget:

    $rp=Get-AzRecoveryServicesBackupRecoveryPoint -UseSecondaryRegion -Item $backupitem -VaultId $targetVault.ID
    $rp=$rp[0]
    
  4. Kör cmdleten Restore-AzRecoveryServicesBackupItem med parametern -RestoreToSecondaryRegion för att utlösa en återställning i den sekundära regionen.

    Kör det här kommandot för att slutföra det här steget:

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

    Dina utdata kommer att likna vad du ser i följande exempel:

    WorkloadName     Operation             Status              StartTime                 EndTime          JobID
    ------------     ---------             ------              ---------                 -------          ----------
    V2VM             CrossRegionRestore   InProgress           4/23/2016 5:00:30 PM                       cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
    
  5. Kör cmdleten Get-AzRecoveryServicesBackupJob med parametern -UseSecondaryRegion för att övervaka återställningsjobbet.

    Kör det här kommandot för att slutföra det här steget:

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

    Dina utdata kommer att likna vad du ser i följande exempel:

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

Korszonsåterställning

Du kan återställa azure-zonansatta virtuella datorer i alla tillgänglighetszoner i samma region.

Om du vill återställa en virtuell dator till en annan zon anger du parametern TargetZoneNumber i cmdleten Restore-AzRecoveryServicesBackupItem .

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

Dina utdata kommer att likna vad du ser i följande exempel:

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

Korszonbaserad återställning stöds endast i scenarier där:

  • Den virtuella källdatorn är zonfäst och är INTE krypterad.
  • Återställningspunkten finns endast på valvnivå. Endast ögonblicksbilder eller ögonblicksbilder och valvnivå stöds inte.
  • Återställningsalternativet är att skapa en ny virtuell dator eller återställa diskar. Alternativet Ersätt diskar ersätter källdata. Därför är alternativet tillgänglighetszon inte tillämpligt.
  • Skapa virtuella datorer/diskar i samma region när valvets lagringsredundans är ZRS. Observera att det inte fungerar om valvets lagringsredundans är GRS, även om den virtuella källdatorn är zonfäst.
  • Skapa virtuella datorer/diskar i den kopplade regionen när valvets lagringsredundans är aktiverad för återställning mellan regioner och om den kopplade regionen stöder zoner.

Ersätt diskar i en virtuell Azure-dator

Utför följande steg för att ersätta diskarna och konfigurationsinformationen:

Skapa en virtuell dator från återställde diskar

När du har återställt diskarna använder du följande steg för att skapa och konfigurera den virtuella datorn från disken.

Kommentar

  1. AzureAz module 3.0.0 eller senare krävs.
  2. Om du vill skapa krypterade virtuella datorer från återställda diskar måste din Azure-roll ha behörighet att utföra åtgärden Microsoft.KeyVault /vaults/deploy/action. Om din roll inte har den här behörigheten skapar du en anpassad roll med den här åtgärden. Mer information finns i Anpassade Azure-roller.
  3. När du har återställt diskar kan du nu hämta en distributionsmall som du kan använda direkt för att skapa en ny virtuell dator. Du behöver inte olika PowerShell-cmdletar för att skapa hanterade/ohanterade virtuella datorer som är krypterade/okrypterade.

Skapa en virtuell dator med hjälp av distributionsmallen

Den resulterande jobbinformationen ger den mall-URI som kan efterfrågas och distribueras.

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

Mallen är inte direkt tillgänglig eftersom den finns under en kunds lagringskonto och den angivna containern. Vi behöver den fullständiga URL:en (tillsammans med en tillfällig SAS-token) för att få åtkomst till den här mallen.

  1. Extrahera först mallnamnet från templateBlobURI. Formatet nämns nedan. Du kan använda delningsåtgärden i PowerShell för att extrahera det slutliga mallnamnet från den här URL:en.

    https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>
    
  2. Sedan kan den fullständiga URL:en genereras enligt beskrivningen här.

    Set-AzCurrentStorageAccount -Name $storageAccountName -ResourceGroupName <StorageAccount RG name>
    $templateBlobFullURI = New-AzStorageBlobSASToken -Container $containerName -Blob <templateName> -Permission r -FullUri
    
  3. Distribuera mallen för att skapa en ny virtuell dator enligt beskrivningen här.

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

Skapa en virtuell dator med hjälp av konfigurationsfilen

I följande avsnitt visas de steg som krävs för att skapa en virtuell dator med hjälp av VMConfig filen.

Kommentar

Vi rekommenderar starkt att du använder distributionsmallen som beskrivs ovan för att skapa en virtuell dator. Det här avsnittet (punkterna 1–6) kommer snart att bli inaktuellt.

  1. Fråga de återställde diskegenskaperna för jobbinformationen.

    $properties = $details.properties
    $storageAccountName = $properties["Target Storage Account Name"]
    $containerName = $properties["Config Blob Container Name"]
    $configBlobName = $properties["Config Blob Name"]
    
  2. Ange Azure Storage-kontexten och återställ JSON-konfigurationsfilen.

    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. Använd JSON-konfigurationsfilen för att skapa vm-konfigurationen.

    $vm = New-AzVMConfig -VMSize $obj.'properties.hardwareProfile'.vmSize -VMName "testrestore"
    
  4. Koppla OS-disken och datadiskarna. Det här steget innehåller exempel på olika hanterade och krypterade VM-konfigurationer. Använd det exempel som passar din VM-konfiguration.

    • Icke-hanterade och icke-krypterade virtuella datorer – Använd följande exempel för icke-hanterade, icke-krypterade virtuella datorer.
        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"
        }
    
    • Icke-hanterade och krypterade virtuella datorer med Microsoft Entra-ID (endast BEK) – För icke-hanterade, krypterade virtuella datorer med Microsoft Entra-ID (endast krypterat med BEK) måste du återställa hemligheten till nyckelvalvet innan du kan ansluta diskar. Mer information finns i Återställa en krypterad virtuell dator från en Azure Backup-återställningspunkt. Följande exempel visar hur du ansluter os- och datadiskar för krypterade virtuella datorer. När du ställer in OS-disken måste du nämna relevant operativsystemtyp.
        $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"
        }
    
    • Icke-hanterade och krypterade virtuella datorer med Microsoft Entra ID (BEK och KEK) – För icke-hanterade, krypterade virtuella datorer med Microsoft Entra ID (krypterad med BEK och KEK) återställer du nyckeln och hemligheten till nyckelvalvet innan du kopplar diskarna. Mer information finns i Återställa en krypterad virtuell dator från en Azure Backup-återställningspunkt. Följande exempel visar hur du ansluter os- och datadiskar för krypterade virtuella datorer.
        $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"
        }
    
    • Icke-hanterade och krypterade virtuella datorer utan Microsoft Entra-ID (endast BEK) – För icke-hanterade, krypterade virtuella datorer utan Microsoft Entra-ID (endast krypterat med BEK) om källnyckelVault /hemlighet inte är tillgängliga återställer du hemligheterna till nyckelvalvet med hjälp av proceduren i Återställ en icke-krypterad virtuell dator från en Azure Backup-återställningspunkt. Kör sedan följande skript för att ange krypteringsinformation för den återställde OS-bloben (det här steget krävs inte för en datablob). Den $dekurl kan hämtas från den återställda keyVault.

    Följande skript behöver bara köras när källnyckelnVault/hemligheten inte är tillgänglig.

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

    När hemligheterna är tillgängliga och krypteringsinformationen också har angetts på OS-bloben ansluter du diskarna med hjälp av skriptet nedan.

    Om källan keyVault/secrets redan är tillgänglig behöver skriptet ovan inte köras.

        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"
        }
    
    • Icke-hanterade och krypterade virtuella datorer utan Microsoft Entra-ID (BEK och KEK) – För icke-hanterade, krypterade virtuella datorer utan Microsoft Entra-ID (krypterat med BEK & KEK), om källa keyVault/key/secret inte är tillgängliga återställer du nyckeln och hemligheterna till nyckelvalvet med hjälp av proceduren i Återställ en icke-krypterad virtuell dator från en Azure Backup-återställningspunkt. Kör sedan följande skript för att ange krypteringsinformation för den återställde OS-bloben (det här steget krävs inte för en datablob). $dekurl och $kekurl kan hämtas från den återställda keyVault.

    Skriptet nedan behöver bara köras när källan keyVault/key/secret inte är tillgänglig.

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

    När nyckeln/hemligheterna är tillgängliga och krypteringsinformationen har angetts på OS-bloben ansluter du diskarna med hjälp av skriptet nedan.

    Om källan keyVault/key/secrets är tillgänglig behöver skriptet ovan inte köras.

        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"
        }
    

    Skriptet nedan behöver bara köras när källan keyVault/secret inte är tillgänglig.

    $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
    

    När hemligheterna är tillgängliga och krypteringsinformationen har angetts på OS-disken kan du läsa Bifoga en datadisk till en virtuell Windows-dator med PowerShell för att koppla de återställde hanterade diskarna.

    • Hanterade och krypterade virtuella datorer utan Microsoft Entra-ID (BEK och KEK) – För hanterade, krypterade virtuella datorer utan Microsoft Entra-ID (krypterat med BEK och KEK), om källnyckelVault /nyckel/hemlighet inte är tillgängliga återställer du nyckeln och hemligheterna till nyckelvalvet med hjälp av proceduren i Återställa en icke-krypterad virtuell dator från en Azure Backup-återställningspunkt. Kör sedan följande skript för att ange krypteringsinformation på den återställde OS-disken (det här steget krävs inte för datadiskar). $dekurl och $kekurl kan hämtas från den återställda keyVault.

    Följande skript behöver bara köras när källnyckelnVault/nyckel/hemlighet inte är tillgänglig.

    $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
    

    När nyckeln/hemligheterna är tillgängliga och krypteringsinformationen har angetts på OS-disken kan du läsa Bifoga en datadisk till en virtuell Windows-dator med PowerShell för att koppla de återställde hanterade diskarna.

  5. Ange nätverksinställningarna.

    $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. Skapa den virtuella datorn.

    New-AzVM -ResourceGroupName "test" -Location "WestUS" -VM $vm
    
  7. Push-tillägg för ADE. Om ADE-tilläggen inte skickas markeras datadiskarna som okrypterade, så det är obligatoriskt att stegen nedan körs:

    • För virtuell dator med Microsoft Entra-ID – Använd följande kommando för att manuellt aktivera kryptering för datadiskarna

      Endast BEK

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

      BEK och KEK

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId  -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -VolumeType Data
      
    • För virtuell dator utan Microsoft Entra-ID – Använd följande kommando för att manuellt aktivera kryptering för datadiskarna.

      Om du under kommandokörningen frågar efter AADClientID måste du uppdatera Azure PowerShell.

      Endast BEK

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

      BEK och KEK

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

Kommentar

Se till att manuellt ta bort JASON-filerna som skapats som en del av disken för krypterad återställning av virtuell dator.

Återställa filer från en säkerhetskopiering av virtuella Azure-datorer

Förutom att återställa diskar kan du även återställa enskilda filer från en säkerhetskopiering av virtuella Azure-datorer. Funktionen för återställningsfiler ger åtkomst till alla filer i en återställningspunkt. Hantera filerna via Utforskaren på samma sätt som för vanliga filer.

De grundläggande stegen för att återställa en fil från en säkerhetskopiering av virtuella Azure-datorer är:

  • Välj den virtuella datorn
  • Välj en återställningspunkt
  • Montera diskarna för återställningspunkten
  • Kopiera nödvändiga filer
  • Demontera disken

Välj den virtuella datorn (när du återställer den virtuella datorn)

Om du vill hämta PowerShell-objektet som identifierar rätt säkerhetskopieringsobjekt startar du från containern i valvet och arbetar dig ned i objekthierarkin. Om du vill välja den container som representerar den virtuella datorn använder du cmdleten Get-AzRecoveryServicesBackupContainer och dirigerar den till cmdleten Get-AzRecoveryServicesBackupItem .

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

Välj en återställningspunkt (när du återställer den virtuella datorn)

Använd cmdleten Get-AzRecoveryServicesBackupRecoveryPoint för att visa en lista över alla återställningspunkter för säkerhetskopieringsobjektet. Välj sedan återställningspunkten som ska återställas. Om du är osäker på vilken återställningspunkt du ska använda är det bra att välja den senaste RecoveryPointType = AppConsistent-punkten i listan.

I följande skript är variabeln $rp en matris med återställningspunkter för det valda säkerhetskopieringsobjektet från de senaste sju dagarna. Matrisen sorteras i omvänd ordning med den senaste återställningspunkten vid index 0. Använd standardindexering av PowerShell-matriser för att välja återställningspunkten. I exemplet väljer $rp[0] den senaste återställningspunkten.

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

Utdata ser ut ungefär så här:

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

Montera diskarna för återställningspunkten

Använd cmdleten Get-AzRecoveryServicesBackupRPMountScript för att hämta skriptet för att montera alla diskar i återställningspunkten.

Kommentar

Diskarna monteras som iSCSI-anslutna diskar till den dator där skriptet körs. Montering sker omedelbart och du debiteras inte några avgifter.

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

Utdata ser ut ungefär så här:

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

Kör skriptet på den dator där du vill återställa filerna. Om du vill köra skriptet måste du ange det angivna lösenordet. När diskarna har anslutits använder du Windows Utforskaren för att bläddra bland de nya volymerna och filerna. Mer information finns i artikeln Säkerhetskopiering, Återställa filer från säkerhetskopiering av virtuella Azure-datorer.

Demontera diskarna

När de nödvändiga filerna har kopierats använder du Disable-AzRecoveryServicesBackupRPMountScript för att demontera diskarna. Se till att demontera diskarna så att åtkomsten till filerna på återställningspunkten tas bort.

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

Återställa data till en virtuell dator med PowerShell

Du kan nu återställa data direkt till den ursprungliga/alternativa virtuella datorn utan att utföra flera steg.

Återställa data till den ursprungliga virtuella datorn

$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

Det sista kommandot utlöser en ursprunglig platsåterställningsåtgärd för att återställa data på plats på den befintliga virtuella datorn.

Återställa data till en nyligen skapad virtuell dator

$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

Det senaste kommandot utlöser en alternativ platsåterställningsåtgärd för att skapa en ny virtuell dator i Target_RG resursgrupp enligt de indata som anges av parametrarna TargetVMName, TargetVNetName, TargetVNetResourceGroup och TargetSubnetName. Detta säkerställer att data återställs på den virtuella datorn, det virtuella nätverket och undernätet.

Nästa steg

Om du föredrar att använda PowerShell för att interagera med dina Azure-resurser kan du läsa powershell-artikeln Distribuera och hantera säkerhetskopiering för Windows Server. Om du hanterar DPM-säkerhetskopior läser du artikeln Distribuera och hantera säkerhetskopiering för DPM.