Sdílet prostřednictvím


Vytvoření virtuálních počítačů DevTest Labs pomocí Azure PowerShellu

V tomto článku se dozvíte, jak vytvořit virtuální počítač Azure DevTest Labs v testovacím prostředí pomocí Azure PowerShellu. K automatizaci vytváření testovacích virtuálních počítačů můžete použít skripty PowerShellu.

Požadavky

Pro práci s tímto článkem potřebujete následující požadavky:

Skript pro vytvoření virtuálního počítače PowerShellu

Cmdlet PowerShell Invoke-AzResourceAction vyvolá createEnvironment akci s ID prostředku laboratoře a parametry virtuálního počítače. Parametry jsou v tabulce hash, která obsahuje všechny vlastnosti virtuálního počítače. Vlastnosti se pro každý typ virtuálního počítače liší. Pokud chcete získat vlastnosti požadovaného typu virtuálního počítače, přečtěte si téma Získání vlastností virtuálního počítače.

Tento ukázkový skript vytvoří virtuální počítač s Windows Serverem 2019 Datacenter. Ukázka také obsahuje vlastnosti pro přidání druhého datového disku v části dataDiskParameters.

[CmdletBinding()]

Param(
[Parameter(Mandatory = $false)]  $SubscriptionId,
[Parameter(Mandatory = $true)]   $LabResourceGroup,
[Parameter(Mandatory = $true)]   $LabName,
[Parameter(Mandatory = $true)]   $NewVmName,
[Parameter(Mandatory = $true)]   $UserName,
[Parameter(Mandatory = $true)]   $Password
)

pushd $PSScriptRoot

try {
    if ($SubscriptionId -eq $null) {
        $SubscriptionId = (Get-AzContext).Subscription.SubscriptionId
    }

    $API_VERSION = '2016-05-15'
    $lab = Get-AzResource -ResourceId "/subscriptions/$SubscriptionId/resourceGroups/$LabResourceGroup/providers/Microsoft.DevTestLab/labs/$LabName"

    if ($lab -eq $null) {
       throw "Unable to find lab $LabName resource group $LabResourceGroup in subscription $SubscriptionId."
    }

    $virtualNetwork = @(Get-AzResource -ResourceType  'Microsoft.DevTestLab/labs/virtualnetworks' -ResourceName $LabName -ResourceGroupName $lab.ResourceGroupName -ApiVersion $API_VERSION)[0]

    #The preceding command puts the VM in the first allowed subnet in the first virtual network for the lab.
    #If you need to use a specific virtual network, use | to find the network. For example:
    #$virtualNetwork = @(Get-AzResource -ResourceType  'Microsoft.DevTestLab/labs/virtualnetworks' -ResourceName $LabName -ResourceGroupName $lab.ResourceGroupName -ApiVersion $API_VERSION) | Where-Object Name -EQ "SpecificVNetName"

    $labSubnetName = $virtualNetwork.properties.allowedSubnets[0].labSubnetName

    #Prepare all the properties needed for the createEnvironment call.
    # The properties are slightly different depending on the type of VM base.
    # The virtual network setup might also affect the properties.

    $parameters = @{
       "name"      = $NewVmName;
       "location"  = $lab.Location;
       "properties" = @{
          "labVirtualNetworkId"     = $virtualNetwork.ResourceId;
          "labSubnetName"           = $labSubnetName;
          "notes"                   = "Windows Server 2019 Datacenter";
          "osType"                  = "windows"
          "expirationDate"          = "2022-12-01"
          "galleryImageReference"   = @{
             "offer"     = "WindowsServer";
             "publisher" = "MicrosoftWindowsServer";
             "sku"       = "2019-Datacenter";
             "osType"    = "Windows";
             "version"   = "latest"
          };
          "size"                    = "Standard_DS2_v2";
          "userName"                = $UserName;
          "password"                = $Password;
          "disallowPublicIpAddress" = $true;
          "dataDiskParameters" = @(@{
            "attachNewDataDiskOptions" = @{
                "diskName" = "adddatadisk"
                "diskSizeGiB" = "1023"
                "diskType" = "Standard"
                }
          "hostCaching" = "ReadWrite"
          })
       }
    }

    #The following line has the same effect as invoking the
    # https://azure.github.io/projects/apis/#!/Labs/Labs_CreateEnvironment REST API

    Invoke-AzResourceAction -ResourceId $lab.ResourceId -Action 'createEnvironment' -Parameters $parameters -ApiVersion $API_VERSION -Force -Verbose
}
finally {
   popd
}

Uložte předchozí skript do souboru s názvem Create-LabVirtualMachine.ps1. Spusťte skript pomocí následujícího příkazu. Zadejte vlastní hodnoty pro zástupné symboly.

.\Create-LabVirtualMachine.ps1 -ResourceGroupName '<lab resource group name>' -LabName '<lab name>' -userName '<VM administrative username>' -password '<VM admin password>' -VMName '<VM name to create>'

Získání vlastností virtuálního počítače

Tato část ukazuje, jak získat konkrétní vlastnosti pro typ virtuálního počítače, který chcete vytvořit. Vlastnosti můžete získat z šablony Azure Resource Manageru (ARM) na webu Azure Portal nebo voláním rozhraní Azure REST API služby DevTest Labs.

Získání vlastností virtuálního počítače pomocí webu Azure Portal

Vytvoření virtuálního počítače na webu Azure Portal vygeneruje šablonu Azure Resource Manageru (ARM), která zobrazuje vlastnosti virtuálního počítače. Jakmile zvolíte základní virtuální počítač, můžete zobrazit šablonu ARM a získat vlastnosti bez skutečného vytvoření virtuálního počítače. Tato metoda představuje nejjednodušší způsob, jak získat popis virtuálního počítače JSON, pokud ještě nemáte testovací virtuální počítač tohoto typu.

  1. Na webu Azure Portal na stránce Přehled testovacího prostředí vyberte Přidat na horním panelu nástrojů.

  2. Na stránce Zvolit základní stránku vyberte požadovaný typ virtuálního počítače. V závislosti na nastavení testovacího prostředí může být základem virtuálního počítače image Azure Marketplace, vlastní image, vzorec nebo prostředí.

  3. Na stránce Vytvořit prostředek testovacího prostředí volitelně přidejte artefakty a na kartách Základní nastavení a Upřesnit nastavení nakonfigurujte všechna další nastavení.

  4. Na kartě Upřesnit nastavení vyberte v dolní části stránky možnost Zobrazit šablonu ARM.

  5. Na stránce Zobrazit šablonu Azure Resource Manageru zkontrolujte šablonu JSON pro vytvoření virtuálního počítače. Oddíl prostředků obsahuje vlastnosti virtuálního počítače.

    Například následující resources část má vlastnosti virtuálního počítače s Windows Serverem 2022 Datacenter:

      "resources": [
           {
                "apiVersion": "2018-10-15-preview",
                "type": "Microsoft.DevTestLab/labs/virtualmachines",
                "name": "[variables('vmName')]",
                "location": "[resourceGroup().location]",
                "properties": {
                     "labVirtualNetworkId": "[variables('labVirtualNetworkId')]",
                     "notes": "Windows Server 2022 Datacenter: Azure Edition Core",
                     "galleryImageReference": {
                          "offer": "WindowsServer",
                          "publisher": "MicrosoftWindowsServer",
                          "sku": "2022-datacenter-azure-edition-core",
                          "osType": "Windows",
                          "version": "latest"
                     },
                     "size": "[parameters('size')]",
                     "userName": "[parameters('userName')]",
                     "password": "[parameters('password')]",
                     "isAuthenticationWithSshKey": false,
                     "labSubnetName": "[variables('labSubnetName')]",
                     "disallowPublicIpAddress": true,
                     "storageType": "Standard",
                     "allowClaim": false,
                     "networkInterface": {
                          "sharedPublicIpAddressConfiguration": {
                               "inboundNatRules": [
                                    {
                                         "transportProtocol": "tcp",
                                         "backendPort": 3389
                                    }
                               ]
                          }
                     }
                }
           }
      ],
    
  6. Zkopírujte a uložte šablonu, která se použije v budoucí automatizaci PowerShellu, a přeneste vlastnosti do skriptu pro vytvoření virtuálního počítače PowerShellu.

Získání vlastností virtuálního počítače pomocí rozhraní DevTest Labs Azure REST API

K získání vlastností existujících virtuálních počítačů testovacího prostředí můžete také volat rozhraní REST API DevTest Labs. Tyto vlastnosti můžete použít k vytvoření více testovacích virtuálních počítačů se stejnými typy.

  1. Na stránce Virtuální počítače - seznam vyberte Vyzkoušet nad prvním blokem kódu.
  2. Na stránce Vyzkoušet rozhraní REST API :
    • V části labName zadejte název testovacího prostředí.
    • V části labResourceGroup zadejte název skupiny prostředků testovacího prostředí.
    • V části subscriptionId vyberte předplatné Azure dané laboratoře.
  3. Vyberte Spustit.
  4. V části Odpověď v části Text zobrazte vlastnosti všech existujících virtuálních počítačů v testovacím prostředí.

Nastavení data vypršení platnosti virtuálního počítače

Ve scénářích školení, ukázek a zkušebních verzí se můžete vyhnout zbytečným nákladům tím, že virtuální počítače odstraníte automaticky k určitému datu. Vlastnost virtuálního expirationDate počítače můžete nastavit při vytváření virtuálního počítače. Skript pro vytvoření virtuálního počítače PowerShellu dříve v tomto článku nastaví datum vypršení platnosti v části properties:

  "expirationDate": "2022-12-01"

Data vypršení platnosti můžete nastavit také u existujících virtuálních počítačů pomocí PowerShellu. Následující skript PowerShellu nastaví datum vypršení platnosti existujícího testovacího virtuálního počítače, pokud ještě nemá datum vypršení platnosti:

# Enter your own values:
$subscriptionId = '<Lab subscription Id>'
$labResourceGroup = '<Lab resource group>'
$labName = '<Lab name>'
$VmName = '<VM name>'
$expirationDate = '<Expiration date, such as 2022-12-16>'

# Sign in to your Azure account

Select-AzSubscription -SubscriptionId $subscriptionId
$VmResourceId = "subscriptions/$subscriptionId/resourcegroups/$labResourceGroup/providers/microsoft.devtestlab/labs/$labName/virtualmachines/$VmName"

$vm = Get-AzResource -ResourceId $VmResourceId -ExpandProperties

# Get the Vm properties
$VmProperties = $vm.Properties

# Set the expirationDate property
If ($VmProperties.expirationDate -eq $null) {
    $VmProperties | Add-Member -MemberType NoteProperty -Name expirationDate -Value $expirationDate -Force
} Else {
    $VmProperties.expirationDate = $expirationDate
}

Set-AzResource -ResourceId $VmResourceId -Properties $VmProperties -Force

Další kroky

Referenční informace k Az.DevTestLabs PowerShellu