Creare un'immagine personalizzata da un file VHD usando PowerShell

In Azure DevTest Labs, le immagini personalizzate consentono di creare rapidamente VM, senza dover attendere l'installazione di tutto il software necessario nel computer di destinazione. Le immagini personalizzate consentono di preinstallare tutto il software necessario in un file VHD da utilizzare per creare una VM. Poiché il software è già installato, creare la VM richiede molto meno tempo. Con le immagini personalizzate è anche possibile clonare le VM, creando l'immagine personalizzata da una VM e usandola quindi per creare le altre.

Prerequisiti

Per completare questa esercitazione è necessario un file VHD caricato nell'account di archiviazione associato al laboratorio in cui si crea l'immagine personalizzata. Selezionare uno dei collegamenti seguenti per caricare un file VHD:

Istruzioni dettagliate

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

  1. Al prompt di PowerShell accedere al proprio account Azure con la chiamata seguente al cmdlet Login-AzureRmAccount.

    Login-AzureRmAccount
    
  2. Selezionare la sottoscrizione di Azure desiderata mediante una chiamata al cmdlet Select-AzureRmSubscription. Sostituire il segnaposto riportato di seguito per la variabile $subscriptionId con un ID sottoscrizione di Azure valido.

    $subscriptionId = '<Specify your subscription ID here>'
    Select-AzureRmSubscription -SubscriptionId $subscriptionId
    
  3. Ottenere l'oggetto lab mediante una chiamata al cmdlet Get-AzureRmResource. Sostituire i segnaposto riportati di seguito per le variabili $labRg e $labName con i valori appropriati per l'ambiente in uso.

    $labRg = '<Specify your lab resource group name here>'
    $labName = '<Specify your lab name here>'
    $lab = Get-AzureRmResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)
    
  4. Ottenere l'account di archiviazione del lab e i relativi valori chiave dall'oggetto lab.

    $labStorageAccount = Get-AzureRmResource -ResourceId $lab.Properties.defaultStorageAccount 
    $labStorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $labStorageAccount.ResourceGroupName -Name $labStorageAccount.ResourceName)[0].Value
    
  5. Sostituire il segnaposto riportato di seguito per la variabile $vhdUri con l'URI al file VHD caricato. È possibile ottenere l'URI del file VHD dal pannello del BLOB dell'account di archiviazione nel portale di Azure.

    $vhdUri = '<Specify the VHD URI here>'
    
  6. Creare l'immagine personalizzata usando il cmdlet New-AzureRmResourceGroupDeployment. Sostituire i segnaposto riportati di seguito per le variabili $customImageName e $customImageDescription con nomi significativi per l'ambiente in uso.

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

Script di PowerShell per creare un'immagine personalizzata da un file VHD

È possibile usare lo script di PowerShell indicato di seguito per creare un'immagine personalizzata da un file VHD. Sostituire i segnaposto (che iniziano e terminano con parentesi acute) con i valori appropriati alle proprie esigenze.

# Log in to your Azure account.  
Login-AzureRmAccount

# Select the desired Azure subscription. 
$subscriptionId = '<Specify your subscription ID here>'
Select-AzureRmSubscription -SubscriptionId $subscriptionId

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

# Get the lab storage account and lab storage account key values.
$labStorageAccount = Get-AzureRmResource -ResourceId $lab.Properties.defaultStorageAccount 
$labStorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $labStorageAccount.ResourceGroupName -Name $labStorageAccount.ResourceName)[0].Value

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

# Set the custom image name and description values.
$customImageName = '<Specify the custom image name>'
$customImageDescription = '<Specify the 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-AzureRmResourceGroupDeployment -ResourceGroupName $lab.ResourceGroupName -Name CreateCustomImage -TemplateUri 'https://raw.githubusercontent.com/Azure/azure-devtestlab/master/Samples/201-dtl-create-customimage-from-vhd/azuredeploy.json' -TemplateParameterObject $parameters

Passaggi successivi