Eseguire il backup e il ripristino di macchine virtuali di Azure con Azure PowerShell

Questo articolo descrive come eseguire il backup e il ripristino di una macchina virtuale di Azure in un insieme di credenziali di Servizi di ripristino Backup di Azure usando i cmdlet di PowerShell.

Backup di Azure offre backup indipendenti e isolati per la protezione dalla distruzione accidentale dei dati nelle macchine virtuali. I backup vengono archiviati in un insieme di credenziali di Servizi di ripristino con gestione incorporata dei punti di ripristino. La configurazione e il ridimensionamento sono semplici, i backup sono ottimizzati ed è possibile eseguire facilmente il ripristino in base alle esigenze.

Prima di poter eseguire il backup o proteggere una macchina virtuale, è necessario completare i prerequisiti per preparare l'ambiente per la protezione delle macchine virtuali.

Prima di iniziare

  • Altre informazioni sugli insiemi di credenziali di Servizi di ripristino.
  • Esaminare l'architettura per il backup delle macchine virtuali di Azure, informazioni sul processo di backup ed esaminare il supporto, le limitazioni e i prerequisiti.
  • Esaminare la gerarchia degli oggetti di PowerShell per Servizi di ripristino.

Gerarchia di oggetti dei servizi di ripristino

La gerarchia di oggetti è riepilogata nel diagramma seguente.

Disgram shows the Recovery Services object hierarchy.

Esaminare le informazioni di riferimento sui cmdlet Az.RecoveryServicesnella libreria di Azure.

Configurare e registrare

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Per iniziare:

  1. Scaricare la versione più recente di PowerShell

  2. Cercare i cmdlet PowerShell di Azure Backup disponibili digitando il comando seguente:

    Get-Command *azrecoveryservices*
    

    Verranno visualizzati alias e cmdlet per Backup di Azure, Azure Site Recovery e l'insieme di credenziali di Servizi di ripristino. L'immagine seguente è un esempio di quanto verrà visualizzato. Non è l'elenco completo dei cmdlet.

    Screenshot shows the list of Recovery Services.

  3. Accedere all'account Azure tramite Connect-AzAccount. Questo cmdlet visualizza una pagina Web che richiede le credenziali dell'account:

    • In alternativa, è possibile includere le credenziali dell'account come parametro nel cmdlet Connect-AzAccount, usando il parametro -Credential.
    • Se si è un partner CSP che lavora per conto di un tenant, specificare il cliente come tenant usando il proprio tenantID o il nome di dominio primario del tenant. Ad esempio: Connessione-AzAccount -Tenant "fabrikam.com"
  4. Associare la sottoscrizione che si vuole usare all'account perché un account può avere molte sottoscrizioni:

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  5. Se si usa Backup di Azure per la prima volta, è necessario usare il cmdlet Register-AzResourceProvider per registrare il provider del servizio di ripristino di Azure con la sottoscrizione.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  6. È possibile verificare che i provider siano stati registrati correttamente usando i comandi seguenti:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    

    Nell'output del comando RegistrationState dovrebbe essere modificato in Registered. In caso contrario, eseguire di nuovo il cmdlet Register-AzResourceProvider.

Creare un insieme di credenziali di Servizi di ripristino

Nei passaggi seguenti viene descritto come creare un insieme di credenziali dei servizi di ripristino. Un insieme di credenziali dei servizi di ripristino è diverso da un insieme di credenziali di backup.

  1. L'insieme di credenziali dei Servizi di ripristino è una risorsa Resource Manager, pertanto è necessario inserirlo all'interno di un gruppo di risorse. È possibile usare un gruppo di risorse esistente o crearne uno con il cmdlet New-AzResourceGroup. Quando si crea un nuovo gruppo di risorse, è necessario specificare il nome e il percorso per il gruppo di risorse.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. Usare il cmdlet New-AzRecoveryServicesVault per creare un nuovo insieme di credenziali di Servizi di ripristino. Assicurarsi di specificare per l'insieme di credenziali lo stesso percorso usato per il gruppo di risorse.

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. Specificare il tipo di ridondanza di archiviazione da usare. È possibile usare Archiviazione con ridondanza locale, Archiviazione con ridondanza geografica o archiviazione con ridondanza della zona. L'esempio seguente mostra l'opzione -Backup Archiviazione Redundancy per testvault impostare su GeoRedundant.

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

    Suggerimento

    Molti cmdlet di Backup di Azure richiedono l'oggetto dell'insieme di credenziali dei servizi di ripristino come input. Per questo motivo, è utile archiviare l'oggetto dell'insieme di credenziali dei servizi di ripristino di backup in una variabile.

Visualizzare gli insiemi di credenziali in un abbonamento

Per visualizzare tutti gli insiemi di credenziali disponibili nella sottoscrizione, usare Get-AzRecoveryServicesVault:

Get-AzRecoveryServicesVault

L'output è simile all'esempio seguente. Si noti che vengono inclusi gli elementi ResourceGroupName e Location associati.

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

Eseguire un backup delle VM di Azure

Usare un insieme di credenziali di Servizi di ripristino per proteggere le macchine virtuali. Prima di applicare la protezione, impostare il contesto dell'insieme di credenziali (tipo di dati protetti nell'insieme di credenziali) e verificare i criteri di protezione. I criteri di protezione rappresentano la pianificazione per l'esecuzione dei processi di backup e il periodo di conservazione di ogni snapshot del backup.

Impostazione del contesto dell'insieme di credenziali

Prima di abilitare la protezione in una macchina virtuale, usare Set-AzRecoveryServicesVaultContext per impostare il contesto dell'insieme di credenziali. Una volta impostato il contesto dell'insieme di credenziali, si applica a tutti i cmdlet successivi. Nell'esempio seguente viene impostato il contesto dell'insieme di credenziali per l'insieme di credenziali, testvault.

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

Recuperare l'ID dell'insieme di credenziali

Si prevede di deprecare l'impostazione del contesto dell'insieme di credenziali in base alle linee guida di Azure PowerShell. È invece possibile archiviare o recuperare l'ID dell'insieme di credenziali e passarlo ai comandi pertinenti. Pertanto, se non è stato impostato il contesto dell'insieme di credenziali o si vuole specificare il comando da eseguire per un determinato insieme di credenziali, passare l'ID dell'insieme di credenziali come "-vaultID" a tutto il comando pertinente, come indicato di seguito:

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

O

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

Modifica delle impostazioni di replica di archiviazione

Usare il comando Set-AzRecoveryServicesBackupProperty per impostare la configurazione della replica Archiviazione dell'insieme di credenziali su Archiviazione con ridondanza locale/archiviazione con ridondanza geografica e accesso in lettura

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

Nota

La ridondanza dell'archiviazione può essere modificata solo se non ci sono elementi di backup protetti nell'insieme di credenziali.

Creare i criteri di protezione

Quando si crea un insieme di credenziali di Servizi di ripristino, questo è dotato di protezione predefinita e criteri di conservazione. I criteri di protezione predefinita attivano un processo di backup ogni giorno all'ora specificata. I criteri di conservazione predefiniti consentono di mantenere il punto di recupero giornaliero per 30 giorni. È possibile usare i criteri predefiniti per proteggere rapidamente la macchina virtuale e modificare i criteri in un secondo momento con dettagli diversi.

Usare Get-AzRecoveryServicesBackupProtectionPolicy per visualizzare i criteri di protezione disponibili nell'insieme di credenziali. È possibile usare questo cmdlet per ottenere un criterio specifico o per visualizzare i criteri associati a un tipo di carico di lavoro. L'esempio seguente ottiene i criteri per il tipo di carico di lavoro AzureVM.

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

L'output è simile all'esempio seguente:

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

Nota

Il fuso orario del campo BackupTime in PowerShell è UTC. Tuttavia, l'orario di backup nel portale di Azure è allineato al fuso orario locale.

I criteri di protezione del backup sono associati almeno a un criterio di conservazione. Un criterio di conservazione definisce per quanto tempo un punto di recupero viene mantenuto prima dell'eliminazione.

Per impostazione predefinita, un'ora di inizio viene definita nell'oggetto Criteri di pianificazione. Usare l'esempio seguente per modificare l'ora di inizio in base all'ora di inizio desiderata. Anche l'ora di inizio desiderata deve essere in formato UTC. Nell'esempio seguente si presuppone che l'ora di inizio desiderata sia 01:00 UTC per i backup giornalieri.

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

Importante

È necessario specificare l'ora di inizio solo in più di 30 minuti. Nell'esempio precedente può essere solo "01:00:00" o "02:30:00". L'ora di inizio non può essere "01:15:00"

Nell'esempio seguente i criteri di pianificazione e i criteri di conservazione vengono archiviati nelle variabili. L'esempio usa tali variabili per definire i parametri durante la creazione di un criterio di protezione, NewPolicy.

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

L'output è simile all'esempio seguente:

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

Abilitare la protezione

Dopo aver definito i criteri di protezione è necessario abilitarli per un elemento. Usare Enable-AzRecoveryServicesBackupProtection per abilitare la protezione. Per abilitare la protezione sono necessari due oggetti, l'elemento e i criteri. Dopo aver associato i criteri all'insieme di credenziali, il flusso di lavoro di backup verrà attivato al momento definito nella pianificazione dei criteri.

Importante

Quando si usa PowerShell per abilitare il backup per più macchine virtuali contemporaneamente, assicurarsi che a un singolo criterio non siano associate più di 100 macchine virtuali. Si tratta di una procedura consigliata. Attualmente, il client di PowerShell non si blocca in modo esplicito se sono presenti più di 100 macchine virtuali, ma il controllo dovrebbe essere aggiunto in futuro.

Gli esempi seguenti abilitano la protezione per l'elemento V2VM usando i criteri NewPolicy. Gli esempi variano a seconda del fatto che la macchina virtuale sia crittografata o meno e in base al tipo di crittografia.

Per abilitare la protezione in macchine virtuali di Resource Manager non crittografate:

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

Per abilitare la protezione in macchine virtuali crittografate con BEK e KEK è necessario concedere al servizio Backup di Azure le autorizzazioni necessarie per la lettura di chiavi e segreti dall'insieme di credenziali delle chiavi.

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

Per abilitare la protezione in macchine virtuali crittografate solo con BEK è necessario concedere al servizio Backup di Azure le autorizzazioni necessarie per la lettura dei segreti dall'insieme di credenziali delle chiavi.

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

Nota

Se si usa il cloud Azure per enti pubblici, usare il valore ff281ffe-705c-4f53-9f37-a40e6f2c68f3 per il parametro ServicePrincipalName nel cmdlet Set-AzKeyVaultAccessPolicy.

Se si vuole eseguire il backup selettivo di alcuni dischi ed escludere altri come indicato in questi scenari, è possibile configurare la protezione e il backup solo dei dischi pertinenti, come documentato qui.

Monitoraggio di un processo di backup

È possibile monitorare le operazioni a esecuzione prolungata, ad esempio i processi di backup, senza usare il portale di Azure. Per ottenere lo stato di un processo in corso, usare il cmdlet Get-AzRecoveryservicesBackupJob . Questo cmdlet ottiene i processi di backup per un insieme di credenziali specifico e tale insieme di credenziali è indicato nel relativo contesto. L'esempio seguente ottiene lo stato di un processo in corso sotto forma di matrice e archivia lo stato nella variabile $joblist.

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

L'output è simile all'esempio seguente:

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

Anziché eseguire il polling di questi processi per il completamento, che non è necessario codice aggiuntivo, usare il cmdlet Wait-AzRecoveryServicesBackupJob . Questo cmdlet sospende l'esecuzione fino al completamento del processo o al raggiungimento del valore di timeout specificato.

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

Gestire i backup delle macchine virtuali di Azure

Modificare i criteri di protezione

Per modificare i criteri di protezione, usare Set-AzRecoveryServicesBackupProtectionPolicy per modificare gli oggetti SchedulePolicy o RetentionPolicy.

Modifica dell'ora pianificata

Quando si crea un criterio di protezione, viene assegnato un'ora di inizio per impostazione predefinita. Negli esempi seguenti viene illustrato come modificare l'ora di inizio di un criterio di protezione.

$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

Modifica della conservazione

Nell'esempio seguente viene modificato il punto di recupero a 365 giorni.

$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

Configurazione della conservazione snapshot di ripristino istantaneo

Nota

Da Azure PowerShell versione 1.6.0 successiva, è possibile aggiornare il periodo di conservazione snapshot di ripristino istantaneo nei criteri usando PowerShell

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

Il valore predefinito sarà 2. È possibile impostare il valore con un minimo di 1 e un massimo di 5. Per i criteri di backup settimanali, il periodo è impostato su 5 e non può essere modificato.

Creazione di Backup di Azure gruppo di risorse durante la conservazione degli snapshot

Nota

Da Azure PowerShell versione 3.7.0 successiva, è possibile creare e modificare il gruppo di risorse creato per l'archiviazione di snapshot istantanei.

Per altre informazioni sulle regole di creazione del gruppo di risorse e altri dettagli rilevanti, vedere la documentazione relativa al gruppo di risorse Backup di Azure Macchine virtuali.

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

Escludere i dischi per una macchina virtuale protetta

Il backup di macchine virtuali di Azure offre la possibilità di escludere o includere in modo selettivo i dischi utili in questi scenari. Se la macchina virtuale è già protetta dal backup di macchine virtuali di Azure e se viene eseguito il backup di tutti i dischi, è possibile modificare la protezione in modo da includere o escludere in modo selettivo i dischi, come indicato qui.

Attivare un backup

Usare Backup-AzRecoveryServicesBackupItem per attivare un processo di backup. Se si tratta del backup iniziale, è un backup completo. I backup successivi saranno incrementali. Nell'esempio seguente viene eseguito il backup di una macchina virtuale da conservare per 60 giorni.

$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

L'output è simile all'esempio seguente:

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

Nota

Il fuso orario dei campi StartTime ed EndTime in PowerShell è UTC. Tuttavia, l'orario visualizzato nel portale di Azure è allineato al fuso orario locale.

Modificare i criteri per gli elementi di backup

È possibile modificare i criteri esistenti o modificare i criteri dell'elemento di cui è stato eseguito il backup da Policy1 a Policy2. Per cambiare i criteri per un elemento sottoposto a backup, recuperare i criteri pertinenti e eseguire il backup dell'elemento e usare il comando Enable-AzRecoveryServices con l'elemento di backup come parametro.

$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

Il comando attende il completamento del backup di configurazione e restituisce l'output seguente.

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

Arresta protezione

Conservare i dati

Per arrestare la protezione, è possibile usare il cmdlet PowerShell Disable-AzRecoveryServicesBackupProtection . In questo modo i backup pianificati verranno interrotti, ma i dati di cui è stato eseguito il backup fino a questo momento vengono conservati per sempre.

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

Riprendi backup

Se la protezione viene arrestata e i dati di backup vengono conservati, è possibile riprendere la protezione ancora una volta. È necessario assegnare un criterio per la protezione rinnovata. Il cmdlet è uguale a quello dei criteri di modifica degli elementi di backup.

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

Elimina dati di backup

Per rimuovere completamente i dati di backup archiviati nell'insieme di credenziali, aggiungere il flag '-RemoveRecoveryPoints' o passare al comando di protezione 'disable'.

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

Ripristinare una macchina virtuale di Azure

Esiste una differenza importante tra il ripristino di una macchina virtuale usando il portale di Azure e il ripristino di una macchina virtuale con PowerShell. Con PowerShell l'operazione di ripristino è completata quando sono stati creati i dischi e le informazioni sulla configurazione dal punto di ripristino L'operazione di ripristino non crea la macchina virtuale. Per creare una macchina virtuale dal disco, vedere la sezione Creare la macchina virtuale da dischi ripristinati. Se non si vuole ripristinare l'intera macchina virtuale, ma si vuole ripristinare o recuperare alcuni file da un backup della macchina virtuale di Azure, vedere la sezione relativa al recupero di file.

Suggerimento

L'operazione di ripristino non crea la macchina virtuale.

L'immagine seguente mostra la gerarchia di RecoveryServicesVault oggetti dal basso a BackupRecoveryPoint.

Screenshot shows the BackupContainer listed by Recovery Services object hierarchy.

Per ripristinare i dati di backup, identificare l'elemento sottoposto a backup e il punto di ripristino che contiene i dati temporizzati. Usare Restore-AzRecoveryServicesBackupItem per ripristinare i dati dall'insieme di credenziali all'account.

I passaggi di base per ripristinare una macchina virtuale di Azure sono:

  • Selezionare la macchina virtuale.
  • Scegliere un punto di ripristino.
  • Ripristinare i dischi.
  • Creare la macchina virtuale dai dischi archiviati.

Ora è anche possibile usare PowerShell per ripristinare direttamente il contenuto di backup in una macchina virtuale (originale/nuovo), senza eseguire i passaggi precedenti separatamente. Per altre informazioni, vedere Ripristinare i dati in una macchina virtuale usando PowerShell.

Selezionare la macchina virtuale (durante il ripristino dei file)

Per ottenere l'oggetto di PowerShell che identifica l'elemento di backup corretto, iniziare dal contenitore nell'insieme di credenziali e procedere verso il basso nella gerarchia degli oggetti. Per selezionare il contenitore che rappresenta la macchina virtuale, usare il cmdlet Get-AzRecoveryServicesBackupContainer e inviarlo tramite pipe al 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

Scegliere un punto di ripristino (durante il ripristino dei file)

Usare il cmdlet Get-AzRecoveryServicesBackupRecoveryPoint per elencare tutti i punti di recupero dell'elemento di backup. Quindi scegliere il punto di ripristino per ripristinare. Se non si è certi del punto di ripristino da usare, è consigliabile scegliere il punto recoveryPointType = AppConsistent più recente nell'elenco.

Nello script seguente la variabile $rp è una matrice di punti di recupero per l'elemento di backup selezionato negli ultimi sette giorni. La matrice viene ordinata in ordine inverso di tempo con il punto di recupero più recente in posizione 0 nell'indice. Per scegliere il punto di ripristino, usare l'indicizzazione standard della matrice di PowerShell. Nell'esempio $rp [0] seleziona il punto di recupero più recente.

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

L'output è simile all'esempio seguente:

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

Ripristinare i dischi

Usare il cmdlet Restore-AzRecoveryServicesBackupItem per ripristinare i dati e la configurazione di un elemento di backup in un punto di ripristino. Dopo aver identificato un punto di ripristino, usarlo come valore per il parametro -RecoveryPoint. Nell'esempio precedente $rp [0] era il punto di ripristino da usare. Nell'esempio di codice seguente $rp[0] è il punto di ripristino da usare per il ripristino del disco.

Per ripristinare i dischi e le informazioni di configurazione:

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

Ripristinare i dischi gestiti

Nota

Se la macchina virtuale supportata ha dischi gestiti e si vuole ripristinarli come dischi gestiti, è stata introdotta la funzionalità del modulo AZURE PowerShell RM v 6.7.0. e poi.

Indicare un parametro aggiuntivo TargetResourceGroupName per specificare il gruppo di risorse in cui verranno ripristinati i dischi gestiti.

Importante

È consigliabile usare il parametro TargetResourceGroupName per il ripristino dei dischi gestiti perché comporta miglioramenti significativi delle prestazioni. Se questo parametro non è specificato, non è possibile trarre vantaggio dalla funzionalità di ripristino istantaneo e l'operazione di ripristino sarà più lenta rispetto a quella di . Se lo scopo è quello di ripristinare i dischi gestiti come dischi non gestiti, non fornire questo parametro e chiarire l'intenzione specificando il -RestoreAsUnmanagedDisks parametro . Il -RestoreAsUnmanagedDisks parametro è disponibile in Azure PowerShell 3.7.0 e versioni successive. Nelle versioni future sarà obbligatorio fornire uno di questi parametri per l'esperienza di ripristino corretta.

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

Il file VMConfig.JSON verrà ripristinato nell'account di archiviazione e i dischi gestiti verranno ripristinati nel gruppo di risorse di destinazione specificato.

L'output è simile all'esempio seguente:

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

Usare il cmdlet Wait-AzRecoveryServicesBackupJob per attendere il completamento del processo di ripristino.

Wait-AzRecoveryServicesBackupJob -Job $restorejob -Timeout 43200

Al termine del processo di ripristino, usare il cmdlet Get-AzRecoveryServicesBackupJobDetail per ottenere i dettagli dell'operazione di ripristino. La proprietà JobDetails contiene le informazioni necessarie per ricreare la macchina virtuale.

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

Uso dell'identità gestita per ripristinare i dischi

Backup di Azure consente anche di usare l'identità gestita durante l'operazione di ripristino per accedere agli account di archiviazione in cui devono essere ripristinati i dischi. Questa opzione è attualmente supportata solo per il ripristino del disco gestito.

Se si vuole usare l'identità gestita assegnata dal sistema dell'insieme di credenziali per ripristinare i dischi, passare un flag aggiuntivo -UseSystemAssignedIdentity al comando Restore-AzRecoveryServicesBackupItem. Se si vuole usare un'identità gestita assegnata dall'utente, passare un parametro -UserAssignedIdentityId con l'ID di Azure Resource Manager dell'identità gestita dell'insieme di credenziali come valore del parametro. Fare riferimento a questo articolo per informazioni su come abilitare l'identità gestita per gli insiemi di credenziali.

Ripristinare dischi selettivi

Un utente può ripristinare in modo selettivo alcuni dischi anziché l'intero set di backup. Specificare i LUN del disco necessari come parametro per ripristinarli solo anziché l'intero set come documentato qui.

Importante

È necessario eseguire il backup selettivo dei dischi per ripristinare in modo selettivo i dischi. Altri dettagli sono disponibili qui.

Dopo aver ripristinato i dischi, passare alla sezione successiva per creare la macchina virtuale.

Ripristinare i dischi in un'area secondaria

Se il ripristino tra aree è abilitato nell'insieme di credenziali con cui sono state protette le macchine virtuali, i dati di backup vengono replicati nell'area secondaria. È possibile usare i dati di backup per eseguire un ripristino. Per attivare un ripristino nell'area secondaria, seguire questa procedura:

  1. Recuperare l'ID dell'insieme di credenziali con cui le macchine virtuali sono protette.

  2. Selezionare l'elemento di backup corretto da ripristinare.

  3. Selezionare il punto di ripristino appropriato nell'area secondaria da usare per eseguire il ripristino.

    Per completare questo passaggio, eseguire questo comando:

    $rp=Get-AzRecoveryServicesBackupRecoveryPoint -UseSecondaryRegion -Item $backupitem -VaultId $targetVault.ID
    $rp=$rp[0]
    
  4. Eseguire il cmdlet Restore-AzRecoveryServicesBackupItem con il -RestoreToSecondaryRegion parametro per attivare un ripristino nell'area secondaria.

    Per completare questo passaggio, eseguire questo comando:

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

    L'output sarà simile all'esempio seguente:

    WorkloadName     Operation             Status              StartTime                 EndTime          JobID
    ------------     ---------             ------              ---------                 -------          ----------
    V2VM             CrossRegionRestore   InProgress           4/23/2016 5:00:30 PM                       cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
    
  5. Eseguire il cmdlet Get-AzRecoveryServicesBackupJob con il -UseSecondaryRegion parametro per monitorare il processo di ripristino.

    Per completare questo passaggio, eseguire questo comando:

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

    L'output sarà simile all'esempio seguente:

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

Ripristino tra zone

È possibile ripristinare le macchine virtuali aggiunte alla zona di Azure in tutte le zone di disponibilità della stessa area.

Per ripristinare una macchina virtuale in un'altra zona, specificare il TargetZoneNumber parametro nel cmdlet Restore-AzRecoveryServicesBackupItem .

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

L'output sarà simile all'esempio seguente:

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

Il ripristino tra zone è supportato solo negli scenari in cui:

  • La macchina virtuale di origine è bloccata e non è crittografata.
  • Il punto di ripristino è presente solo nel livello dell'insieme di credenziali. Gli snapshot o solo lo snapshot e il livello dell'insieme di credenziali non sono supportati.
  • L'opzione di ripristino consiste nel creare una nuova macchina virtuale o ripristinare i dischi. L'opzione Sostituisci dischi sostituisce i dati di origine; pertanto, l'opzione della zona di disponibilità non è applicabile.
  • Creazione di vm/dischi nella stessa area quando la ridondanza dell'archiviazione dell'insieme di credenziali è ZRS. Si noti che non funziona se la ridondanza dell'archiviazione dell'insieme di credenziali è grs, anche se la macchina virtuale di origine è bloccata.
  • Creazione di vm/dischi nell'area abbinata quando la ridondanza dell'archiviazione dell'insieme di credenziali è abilitata per il ripristino tra aree e se l'area abbinata supporta le zone.

Sostituire i dischi nella macchina virtuale di Azure

Per sostituire i dischi e le informazioni di configurazione, seguire questa procedura:

Creare una macchina virtuale da dischi ripristinati

Dopo aver ripristinato i dischi, usare la procedura seguente per creare e configurare la macchina virtuale dal disco.

Nota

  1. È necessario il modulo AzureAz 3.0.0 o versione successiva.
  2. Per creare macchine virtuali crittografate da dischi ripristinati, il ruolo di Azure deve disporre dell'autorizzazione per eseguire l'azione, ovvero Microsoft.KeyVault/vaults/deploy/action. Se il ruolo non dispone di questa autorizzazione, creare un ruolo personalizzato con questa azione. Per altre informazioni, vedere Ruoli personalizzati in Azure.
  3. Dopo aver ripristinato i dischi, è ora possibile ottenere un modello di distribuzione che può essere usato direttamente per creare una nuova macchina virtuale. YOu non richiede cmdlet di PowerShell diversi per creare macchine virtuali gestite/non gestite che sono crittografate/non crittografate.

Creare una macchina virtuale usando il modello di distribuzione

I dettagli del processo risultante includono l'URI del modello che può essere sottoposto a query e distribuito.

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

Il modello non è direttamente accessibile perché si trova nell'account di archiviazione del cliente e nel contenitore specificato. Per accedere a questo modello, è necessario l'URL completo (insieme a un token di firma di accesso condiviso temporaneo).

  1. Estrarre innanzitutto il nome del modello dal templateBlobURI. Il formato è indicato di seguito. È possibile usare l'operazione di suddivisione in PowerShell per estrarre il nome finale del modello da questo URL.

    https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>
    
  2. È quindi possibile generare l'URL completo come illustrato qui.

    Set-AzCurrentStorageAccount -Name $storageAccountName -ResourceGroupName <StorageAccount RG name>
    $templateBlobFullURI = New-AzStorageBlobSASToken -Container $containerName -Blob <templateName> -Permission r -FullUri
    
  3. Distribuire il modello per creare una nuova macchina virtuale, come illustrato qui.

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

Creare una macchina virtuale usando il file di configurazione

La sezione seguente elenca i passaggi necessari per creare una macchina virtuale usando VMConfig il file.

Nota

È consigliabile usare il modello di distribuzione descritto in precedenza per creare una macchina virtuale. Questa sezione (punti 1-6) sarà presto deprecata.

  1. Ricercare i dettagli del processo nelle proprietà del disco ripristinato.

    $properties = $details.properties
    $storageAccountName = $properties["Target Storage Account Name"]
    $containerName = $properties["Config Blob Container Name"]
    $configBlobName = $properties["Config Blob Name"]
    
  2. Impostare il contesto di archiviazione di Azure e ripristinare il file di configurazione JSON.

    Set-AzCurrentStorageAccount -Name $storageaccountname -ResourceGroupName "testvault"
    $destination_path = "C:\vmconfig.json"
    Get-AzStorageBlobContent -Container $containerName -Blob $configBlobName -Destination $destination_path
    $obj = ((Get-Content -Path $destination_path -Raw -Encoding Unicode)).TrimEnd([char]0x00) | ConvertFrom-Json
    
  3. Usare il file di configurazione JSON per creare la configurazione della macchina virtuale.

    $vm = New-AzVMConfig -VMSize $obj.'properties.hardwareProfile'.vmSize -VMName "testrestore"
    
  4. Collegare il disco del sistema operativo e i dischi dei dati. Questo passaggio include esempi di varie configurazioni di macchine virtuali gestite e crittografate. Usare l'esempio adatto alla configurazione della propria macchina virtuale.

    • Macchine virtuali non gestite e non crittografate: usare l'esempio seguente per macchine virtuali non gestite e non crittografate.
        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"
        }
    
    • Macchine virtuali non gestite e crittografate con MICROSOFT Entra ID (solo BEK): per macchine virtuali non gestite e crittografate con ID Microsoft Entra (crittografate solo con BEK), è necessario ripristinare il segreto nell'insieme di credenziali delle chiavi prima di poter collegare i dischi. Per altre informazioni, vedere Ripristinare una macchina virtuale crittografata da un punto di ripristino di Backup di Azure. L'esempio seguente illustra come collegare dischi del sistema operativo e i dati per le macchine virtuali crittografate. Durante l'impostazione del disco del sistema operativo, assicurarsi di indicare il tipo di sistema operativo pertinente.
        $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"
        }
    
    • Macchine virtuali non gestite e crittografate con MICROSOFT Entra ID (BEK e KEK): per macchine virtuali non gestite e crittografate con ID Microsoft Entra (crittografate con BEK e KEK), ripristinare la chiave e il segreto nell'insieme di credenziali delle chiavi prima di collegare i dischi. Per altre informazioni, vedere Ripristinare una macchina virtuale crittografata da un punto di ripristino di Backup di Azure. L'esempio seguente illustra come collegare dischi del sistema operativo e i dati per le macchine virtuali crittografate.
        $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"
        }
    
    • Macchine virtuali non gestite e crittografate senza MICROSOFT Entra ID (solo BEK): per macchine virtuali non gestite e crittografate senza ID Microsoft Entra (solo tramite BEK), se keyVault/segreto di origine non sono disponibili, ripristinare i segreti nell'insieme di credenziali delle chiavi usando la procedura in Ripristinare una macchina virtuale non crittografata da un punto di ripristino Backup di Azure. Eseguire quindi gli script seguenti per impostare i dettagli di crittografia nel BLOB del sistema operativo ripristinato (questo passaggio non è necessario per un BLOB di dati). Recuperare $dekurl dall'insieme di credenziali delle chiavi ripristinato.

    Lo script seguente deve essere eseguito solo quando l'insieme di credenziali delle chiavi o il segreto di origine non è disponibile.

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

    Quando i segreti sono disponibili e le informazioni dettagliate sulla crittografia sono impostate nel BLOB del sistema operativo, collegare i dischi usando lo script riportato di seguito.

    Se l'insieme di credenziali delle chiavi di origine o i segreti sono già disponibili, non è necessario eseguire lo script precedente.

        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"
        }
    
    • Macchine virtuali non gestite e crittografate senza MICROSOFT Entra ID (BEK e KEK): per macchine virtuali non gestite e crittografate senza MICROSOFT Entra ID (crittografato tramite BEK & KEK), se keyVault/chiave/segreto di origine non sono disponibili, ripristinare la chiave e i segreti nell'insieme di credenziali delle chiavi usando la procedura in Ripristinare una macchina virtuale non crittografata da un punto di ripristino Backup di Azure. Eseguire quindi gli script seguenti per impostare i dettagli di crittografia nel BLOB del sistema operativo ripristinato (questo passaggio non è necessario per un BLOB di dati). Recuperare $dekurl e $kekurl dall'insieme di credenziali delle chiavi ripristinato.

    Lo script seguente deve essere eseguito solo quando l'insieme di credenziali delle chiavi di origine/chiave/segreto non è disponibile.

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

    Quando la chiave e i segreti sono disponibili e le informazioni dettagliate sulla crittografia sono impostate nel BLOB del sistema operativo, collegare i dischi usando lo script riportato di seguito.

    Se sono disponibili keyVault/key/secrets di origine, non è necessario eseguire lo script precedente.

        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"
        }
    
    • Macchine virtuali gestite e non crittografate: per le macchine virtuali gestite e non crittografate, collegare i dischi gestiti ripristinati. Per informazioni dettagliate, vedere Collegare un disco dati a una macchina virtuale Windows con PowerShell.

    • Macchine virtuali gestite e crittografate con MICROSOFT Entra ID (solo BEK): per le macchine virtuali crittografate gestite con ID Microsoft Entra (crittografate solo con BEK), collegare i dischi gestiti ripristinati. Per informazioni dettagliate, vedere Collegare un disco dati a una macchina virtuale Windows con PowerShell.

    • Macchine virtuali gestite e crittografate con MICROSOFT Entra ID (BEK e KEK): per le macchine virtuali crittografate gestite con ID Microsoft Entra (crittografate con BEK e KEK), collegare i dischi gestiti ripristinati. Per informazioni dettagliate, vedere Collegare un disco dati a una macchina virtuale Windows con PowerShell.

    • Macchine virtuali gestite e crittografate senza ID BEK (solo BEK) - Per macchine virtuali gestite e crittografate senza ID Microsoft Entra (solo con BEK), se keyVault/segreto di origine non sono disponibili, ripristinare i segreti nell'insieme di credenziali delle chiavi usando la procedura in Ripristinare una macchina virtuale non crittografata da un punto di ripristino Backup di Azure. Eseguire quindi gli script seguenti per impostare i dettagli di crittografia sul disco del sistema operativo ripristinato (questo passaggio non è necessario per un disco dati). Recuperare $dekurl dall'insieme di credenziali delle chiavi ripristinato.

    Lo script seguente deve essere eseguito solo quando l'insieme di credenziali delle chiavi di origine/segreto non è disponibile.

    $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
    

    Quando i segreti sono disponibili e le informazioni dettagliate sulla crittografia sono impostate nel disco del sistema operativo, vedere Collegare un disco dati a una macchina virtuale Windows con PowerShell per collegare i dischi gestiti ripristinati.

    • Macchine virtuali gestite e crittografate senza l'ID BEK (BEK e KEK) di Microsoft Entra- Per macchine virtuali gestite e crittografate senza ID Microsoft Entra (crittografato con BEK & KEK), se keyVault/chiave/segreto di origine non sono disponibili, ripristinare la chiave e i segreti nell'insieme di credenziali delle chiavi usando la procedura in Ripristinare una macchina virtuale non crittografata da un punto di ripristino Backup di Azure. Eseguire quindi gli script seguenti per impostare i dettagli di crittografia sul disco del sistema operativo ripristinato (questo passaggio non è necessario per i dischi dati). Recuperare $dekurl e $kekurl dall'insieme di credenziali delle chiavi ripristinato.

    Lo script seguente deve essere eseguito solo quando l'insieme di credenziali delle chiavi di origine/chiave/segreto non è disponibile.

    $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
    

    Quando la chiave e i segreti sono disponibili e le informazioni dettagliate sulla crittografia sono impostate nel disco del sistema operativo, vedere Collegare un disco dati a una macchina virtuale Windows con PowerShell per collegare i dischi gestiti ripristinati.

  5. Configurare le impostazioni di rete.

    $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. Creare la macchina virtuale.

    New-AzVM -ResourceGroupName "test" -Location "WestUS" -VM $vm
    
  7. Eseguire il push dell'estensione ADE. Se non viene eseguito il push delle estensioni di Active Directory, i dischi dati verranno contrassegnati come non crittografati, quindi è obbligatorio eseguire i passaggi seguenti:

    • Per la macchina virtuale con MICROSOFT Entra ID : usare il comando seguente per abilitare manualmente la crittografia per i dischi dati

      Solo BEK

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

      BEK e KEK

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId  -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -VolumeType Data
      
    • Per la macchina virtuale senza Microsoft Entra ID : usare il comando seguente per abilitare manualmente la crittografia per i dischi dati.

      Se durante l'esecuzione del comando richiede AADClientID, è necessario aggiornare Azure PowerShell.

      Solo BEK

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

      BEK e KEK

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

Nota

Assicurarsi di eliminare manualmente i file JASON creati come parte del processo di ripristino della macchina virtuale crittografata.

Ripristinare file da un backup della macchina virtuale di Azure

Oltre al ripristino di dischi è anche possibile ripristinare singoli file da un backup della macchina virtuale di Azure. La funzionalità di ripristino dei file consente di accedere a tutti i file inclusi in un punto di ripristino. Gestire i file tramite Esplora file come si farebbe con i file normali.

La procedura di base per il ripristino di un file dal backup di una macchina virtuale di Azure si articola nei passaggi seguenti:

  • Selezionare la macchina virtuale
  • Scegliere un punto di ripristino
  • Montare i dischi del punto di ripristino
  • Copiare i file necessari
  • Smontare il disco

Selezionare la macchina virtuale (durante il ripristino della macchina virtuale)

Per ottenere l'oggetto di PowerShell che identifica l'elemento di backup corretto, iniziare dal contenitore nell'insieme di credenziali e procedere verso il basso nella gerarchia degli oggetti. Per selezionare il contenitore che rappresenta la macchina virtuale, usare il cmdlet Get-AzRecoveryServicesBackupContainer e inviarlo tramite pipe al 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

Scegliere un punto di ripristino (durante il ripristino della macchina virtuale)

Usare il cmdlet Get-AzRecoveryServicesBackupRecoveryPoint per elencare tutti i punti di recupero dell'elemento di backup. Quindi scegliere il punto di ripristino per ripristinare. Se non si è certi del punto di ripristino da usare, è consigliabile scegliere il punto recoveryPointType = AppConsistent più recente nell'elenco.

Nello script seguente la variabile $rp è una matrice di punti di recupero per l'elemento di backup selezionato negli ultimi sette giorni. La matrice viene ordinata in ordine inverso di tempo con il punto di recupero più recente in posizione 0 nell'indice. Per scegliere il punto di ripristino, usare l'indicizzazione standard della matrice di PowerShell. Nell'esempio $rp [0] seleziona il punto di recupero più recente.

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

L'output è simile all'esempio seguente:

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

Montare i dischi del punto di ripristino

Usare il cmdlet Get-AzRecoveryServicesBackupRPMountScript per ottenere lo script per montare tutti i dischi del punto di ripristino.

Nota

I dischi sono montati come dischi collegati iSCSI al computer in cui viene eseguito lo script. Il montaggio avviene immediatamente e non si incorre in alcun addebito.

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

L'output è simile all'esempio seguente:

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

Eseguire lo script nel computer in cui si vogliono recuperare i file. Per eseguire lo script è necessario immettere la password specificata. Dopo aver collegato i dischi, usare Esplora risorse per esplorare i nuovi volumi e file. Per altre informazioni, vedere l'articolo Backup, Ripristinare i file dal backup delle macchine virtuali di Azure.

Smontare i disco

Dopo aver copiato i file necessari, usare Disable-AzRecoveryServicesBackupRPMountScript per smontare i dischi. Assicurarsi di smontare i dischi in modo che l'accesso ai file del punto di ripristino venga rimosso.

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

Ripristinare i dati in una macchina virtuale con PowerShell

È ora possibile ripristinare direttamente i dati in una macchina virtuale originale/alternativa senza eseguire più passaggi.

Ripristinare i dati nella macchina virtuale originale

$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

L'ultimo comando attiva un'operazione di ripristino della posizione originale per ripristinare i dati sul posto nella macchina virtuale esistente.

Ripristinare i dati in una macchina virtuale appena creata

$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

L'ultimo comando attiva un'operazione di ripristino del percorso alternativo per creare una nuova macchina virtuale in Target_RG gruppo di risorse in base agli input specificati dai parametri TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. In questo modo si garantisce che i dati vengano ripristinati nella macchina virtuale, nella rete virtuale e nella subnet necessarie.

Passaggi successivi

Se si preferisce usare PowerShell per coinvolgere le risorse di Azure, vedere l'articolo PowerShell Distribuire e gestire il backup in Azure per server Windows/client Windows mediante PowerShell. Se si gestiscono i backup DPM, vedere l'articolo Distribuire e gestire il backup per DPM.