Creare un'immagine personalizzata da un file VHD usando PowerShellCreate a custom image from a VHD file using 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.In Azure DevTest Labs, custom images enable you to create VMs quickly without waiting for all the required software to be installed on the target machine. Le immagini personalizzate consentono di preinstallare tutto il software necessario in un file VHD da utilizzare per creare una VM.Custom images allow you to pre-install all the software that you need in a VHD file, and then use the VHD file to create a VM. Poiché il software è già installato, creare la VM richiede molto meno tempo.Because the software is already installed, the VM creation time is much quicker. Con le immagini personalizzate è anche possibile clonare le VM, creando l'immagine personalizzata da una VM e usandola quindi per creare le altre.In addition, custom images can be used to clone VMs by creating a custom image from a VM, and then creating VMs based on that custom image.

PrerequisitiPrerequisites

Per completare questa esercitazione è necessario un file VHD caricato nell'account di archiviazione associato al laboratorio in cui si crea l'immagine personalizzata.To complete this tutorial, you must have a VHD file uploaded to the storage account associated with the lab in which you are creating the custom image. Selezionare uno dei collegamenti seguenti per caricare un file VHD:Select any of the following links to upload a VHD file:

Istruzioni dettagliateStep-by-step instructions

La procedura seguente illustra come creare un'immagine personalizzata da un file VHD usando PowerShell:The following steps walk you through creating a custom image from a VHD file using PowerShell:

  1. Al prompt di PowerShell accedere al proprio account Azure con la chiamata seguente al cmdlet Login-AzureRmAccount.At a PowerShell prompt, log in to your Azure account with the following call to the Login-AzureRmAccount cmdlet.

    Login-AzureRmAccount
    
  2. Selezionare la sottoscrizione di Azure desiderata mediante una chiamata al cmdlet Select-AzureRmSubscription.Select the desired Azure subscription by calling the Select-AzureRmSubscription cmdlet. Sostituire il segnaposto riportato di seguito per la variabile $subscriptionId con un ID sottoscrizione di Azure valido.Replace the following placeholder for the $subscriptionId variable with a valid Azure subscription ID.

    $subscriptionId = '<Specify your subscription ID here>'
    Select-AzureRmSubscription -SubscriptionId $subscriptionId
    
  3. Ottenere l'oggetto lab mediante una chiamata al cmdlet Get-AzureRmResource.Get the lab object by calling the Get-AzureRmResource cmdlet. Sostituire i segnaposto riportati di seguito per le variabili $labRg e $labName con i valori appropriati per l'ambiente in uso.Replace the following placeholders for the $labRg and $labName variables with the appropriate values for your environment.

    $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.Get the lab storage account and lab storage account key values from the lab object.

    $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.Replace the following placeholder for the $vhdUri variable with the URI to your uploaded VHD file. È possibile ottenere l'URI del file VHD dal pannello del BLOB dell'account di archiviazione nel portale di Azure.You can get the VHD file's URI from the storage account's blob blade in the Azure portal.

    $vhdUri = '<Specify the VHD URI here>'
    
  6. Creare l'immagine personalizzata usando il cmdlet New-AzureRmResourceGroupDeployment.Create the custom image using the New-AzureRmResourceGroupDeployment cmdlet. Sostituire i segnaposto riportati di seguito per le variabili $customImageName e $customImageDescription con nomi significativi per l'ambiente in uso.Replace the following placeholders for the $customImageName and $customImageDescription variables to meaningful names for your environment.

    $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 VHDPowerShell script to create a custom image from a VHD file

È possibile usare lo script di PowerShell indicato di seguito per creare un'immagine personalizzata da un file VHD.The following PowerShell script can be used to create a custom image from a VHD file. Sostituire i segnaposto (che iniziano e terminano con parentesi acute) con i valori appropriati alle proprie esigenze.Replace the placeholders (starting and ending with angle brackets) with the appropriate values for your needs.

# 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 successiviNext steps