Creare un'immagine personalizzata da un file VHD con PowerShell

In Azure DevTest Labs è possibile usare immagini personalizzate per:

  • Creare una macchina virtuale da un file VHD con tutto il software necessario.
  • Creare rapidamente macchine virtuali, perché non è necessario installare tutto il software necessario nei computer di destinazione.
  • Clonare una macchina virtuale creando un'immagine personalizzata da una macchina virtuale e quindi creando macchine virtuali basate su tale immagine.

Prerequisiti

Per eseguire questa esercitazione, è necessario un file del disco rigido virtuale (VHD) caricato nell'account di archiviazione di Azure per il lab in cui si vuole creare l'immagine personalizzata. Per caricare un file VHD nell'account di archiviazione, seguire le istruzioni riportate in uno di questi articoli:

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.

passaggi di PowerShell

La procedura seguente illustra come creare un'immagine personalizzata da un file VHD usando Azure PowerShell:

  1. Al prompt dei comandi di PowerShell accedere all'account Azure con il cmdlet Connect-AzAccount :

    Connect-AzAccount
    
  2. Selezionare la sottoscrizione di Azure con il cmdlet Select-AzSubscription . Sostituire <l'ID> sottoscrizione con il GUID dell'ID sottoscrizione.

    $subscriptionId = '<subscription ID>'
    Select-AzSubscription -SubscriptionId $subscriptionId
    
  3. Ottenere l'oggetto lab chiamando il cmdlet Get-AzResource . Sostituire il nome> del <gruppo di risorse lab e <i segnaposto del nome> del lab con il proprio gruppo di risorse e i nomi dei lab.

    $labRg = '<lab resource group name>'
    $labName = '<lab name>'
    $lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)
    
  4. Sostituire il segnaposto per la variabile $vhdUri con l'URI del file VHD caricato. È possibile ottenere l'URI del file VHD dalla relativa pagina BLOB nell'account di archiviazione del lab nel portale di Azure. Un esempio di URI del disco rigido virtuale è: https://acontosolab1234.blob.core.windows.net/uploads/myvhd.vhd.

    $vhdUri = '<VHD URI>'
    
  5. Creare l'immagine personalizzata usando il cmdlet New-AzResourceGroupDeployment . Sostituire il <nome> dell'immagine personalizzata e <i segnaposto della descrizione> dell'immagine personalizzata con il nome e la descrizione desiderati.

    $customImageName = '<custom image name>'
    $customImageDescription = '<custom image description>'
    
    $parameters = @{existingLabName="$($lab.Name)"; existingVhdUri=$vhdUri; imageOsType='windows'; isVhdSysPrepped=$false; imageName=$customImageName; imageDescription=$customImageDescription}
    
    New-AzResourceGroupDeployment -ResourceGroupName $lab.ResourceGroupName -Name CreateCustomImage -TemplateUri 'https://raw.githubusercontent.com/Azure/azure-devtestlab/master/samples/DevTestLabs/QuickStartTemplates/201-dtl-create-customimage-from-vhd/azuredeploy.json' -TemplateParameterObject $parameters
    

Script di PowerShell completo

La combinazione dei passaggi precedenti produce lo script di PowerShell seguente che crea un'immagine personalizzata da un file VHD. Per usare lo script, sostituire i segnaposto seguenti con i propri valori:

  • <ID sottoscrizione>
  • <nome del gruppo di risorse lab>
  • <nome lab>
  • <URI del disco rigido virtuale>
  • <nome dell'immagine personalizzata>
  • <Descrizione dell'immagine personalizzata>
# Log in to your Azure account.
Connect-AzAccount

# Select the desired Azure subscription.
$subscriptionId = '<subscription ID>'
Select-AzSubscription -SubscriptionId $subscriptionId

# Get the lab object.
$labRg = '<lab resource group name>'
$labName = '<lab name>'
$lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)

# Set the URI of the VHD file.
$vhdUri = '<VHD URI>'

# Set the custom image name and description values.
$customImageName = '<custom image name>'
$customImageDescription = '<custom image description>'

# Set up the parameters object.
$parameters = @{existingLabName="$($lab.Name)"; existingVhdUri=$vhdUri; imageOsType='windows'; isVhdSysPrepped=$false; imageName=$customImageName; imageDescription=$customImageDescription}

# Create the custom image.
New-AzResourceGroupDeployment -ResourceGroupName $lab.ResourceGroupName -Name CreateCustomImage -TemplateUri 'https://raw.githubusercontent.com/Azure/azure-devtestlab/master/samples/DevTestLabs/QuickStartTemplates/201-dtl-create-customimage-from-vhd/azuredeploy.json' -TemplateParameterObject $parameters

Passaggi successivi