Erstellen eines benutzerdefinierten Images aus einer VHD-Datei mithilfe von PowerShell

In Azure DevTest Labs ermöglicht die Verwendung benutzerdefinierter Images Folgendes:

  • Erstellen Sie anhand einer VHD-Datei eine VM, auf der die gesamte benötigte Software vorinstalliert ist.
  • Sie können VMs innerhalb kürzester Zeit erstellen, da Sie nicht die gesamte erforderliche Software auf den Zielcomputern installieren müssen.
  • Klonen Sie eine VM, indem Sie ein benutzerdefiniertes Image aus einer VM erstellen und dann VMs auf der Grundlage dieses Images erstellen.

Voraussetzungen

Für dieses Tutorial benötigen Sie eine virtuelle Festplattendatei (VHD), die in das Azure Storage-Konto für das Lab hochgeladen wurde, in dem Sie das benutzerdefinierte Image erstellen möchten. Befolgen Sie die Anweisungen in einem der folgenden Artikel, um eine VHD-Datei in Ihr Speicherkonto hochzuladen:

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren des Azure Az PowerShell-Moduls. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

PowerShell-Schritte

Die folgenden Schritte führen Sie durch die Erstellung eines benutzerdefinierten Images aus einer VHD-Datei mithilfe von Azure PowerShell:

  1. Um sich bei Eingabeaufforderung seitens PowerShell in Ihrem Azure-Konto anzumelden, verwenden Sie das Cmdlet Connect-AzAccount:

    Connect-AzAccount
    
  2. Wählen Sie mit dem Cmdlet Select-AzSubscription Ihr gewünschtes Azure-Abonnement aus. Ersetzen Sie <subscription ID> durch die GUID Ihrer Abonnement-ID.

    $subscriptionId = '<subscription ID>'
    Select-AzSubscription -SubscriptionId $subscriptionId
    
  3. Rufen Sie das Lab-Objekt durch Aufrufen des Cmdlets Get-AzResource ab. Ersetzen Sie die Platzhalter <lab resource group name> und <lab name> durch Ihre eigenen Ressourcengruppen- und Lab-Namen.

    $labRg = '<lab resource group name>'
    $labName = '<lab name>'
    $lab = Get-AzResource -ResourceId ('/subscriptions/' + $subscriptionId + '/resourceGroups/' + $labRg + '/providers/Microsoft.DevTestLab/labs/' + $labName)
    
  4. Ersetzen Sie den folgenden Platzhalter für die Variable $vhdUri durch den URI Ihrer hochgeladenen VHD-Datei. Sie können den URI der VHD-Datei von der Blobseite im Speicherkonto des Labs im Azure-Portal abrufen. Ein Beispiel für einen VHD-URI ist: https://acontosolab1234.blob.core.windows.net/uploads/myvhd.vhd.

    $vhdUri = '<VHD URI>'
    
  5. Erstellen Sie das benutzerdefinierte Image mit dem Cmdlet New-AzResourceGroupDeployment. Ersetzen Sie die Platzhalter für den <benutzerdefinierten Imagenamen> und die <benutzerdefinierte Bildbeschreibung> durch den Namen und die Beschreibung, die Sie verwenden möchten.

    $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
    

Vollständiges PowerShell-Skript

Die Kombination der vorherigen Schritte erzeugt das folgende PowerShell-Skript, das ein benutzerdefiniertes Image aus einer VHD-Datei erstellt. Um das Skript zu verwenden, ersetzen Sie die folgenden Platzhalter durch Ihre eigenen Werte:

  • <Abonnement-ID>
  • <Ressourcengruppenname des Labs>
  • <Lab-Name>
  • <VHD-URI>
  • <Name des benutzerdefinierten Images>
  • <Beschreibung des benutzerdefinierten Images>
# 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

Nächste Schritte