Teilen über


Starten und Beenden von virtuellen Azure DevTest Labs-Computern über die Befehlszeile

In diesem Artikel wird gezeigt, wie Sie virtuelle Azure DevTest Labs-Computer (VMs) mithilfe von Azure PowerShell- oder Azure CLI-Befehlszeilen und -Skripts starten oder beenden.

Sie können DevTest Labs-VMs im Azure-Portal starten, beenden oder neu starten. Sie können das Portal auch verwenden, um Zeitpläne für den automatischen Start und das automatische Herunterfahren sowie Richtlinien für Lab-VMs zu konfigurieren.

Wenn Sie das Starten oder Beenden für Lab-VMs über Skripts steuern oder automatisieren möchten, verwenden Sie PowerShell- oder Azure CLI-Befehle. Sie können beispielsweise start- oder stop-Befehle für folgende Zecke verwenden:

  • Testen einer Anwendung mit drei Ebenen, bei der die Ebenen nacheinander gestartet werden müssen.
  • Deaktivieren von VMs, um Kosten zu sparen, wenn diese benutzerdefinierte Kriterien erfüllen.
  • Starten einer VM, wenn ein CI/CD-Workflow (Continuous Integration und Continuous Delivery) beginnt, und Beenden der VM, wenn der Workflow beendet ist. Ein Beispiel für diesen Workflow finden Sie unter Ausführen einer Image Factory in Azure DevOps.

Voraussetzungen

  • Eine Lab-VM in DevTest Labs.
  • Für Azure PowerShell das Az PowerShell-Modul, das auf Ihrer Arbeitsstation installiert ist. Vergewissern Sie sich, dass die aktuelle Version installiert ist. Führen Sie ggf. Update-Module -Name Az aus, um das Modul zu aktualisieren.
  • Für Azure CLI: Installation von Azure CLI auf Ihrer Arbeitsstation.

Azure PowerShell-Skript

Das folgende PowerShell-Skript startet oder beendet eine VM in einem Lab mit Invoke-AzResourceAction. Der ResourceId-Parameter ist die vollqualifizierte ID für die Lab-VM, die Sie starten oder beenden möchten. Der Action-Parameter bestimmt, ob die VM gestartet oder beenden werden soll (abhängig von der gewünschten Aktion).

  1. Verwenden Sie auf Ihrer Arbeitsstation das PowerShell-Cmdlet Connect-AzAccount, um sich bei Ihrem Azure-Konto zu anmelden. Wenn Sie über mehrere Azure-Abonnements verfügen, können Sie die Auskommentierung der Zeile Set-AzContext aufheben und die <Subscription ID> eintragen, die verwendet werden soll.

    # Sign in to your Azure subscription
    $sub = Get-AzSubscription -ErrorAction SilentlyContinue
    if(-not($sub))
    {
        Connect-AzAccount
    }
    
    # Set-AzContext -SubscriptionId "<Subscription ID>"
    
  2. Geben Sie Werte für <lab name> und <VM name> an, und geben Sie die gewünschte Aktion für <Start or Stop> ein.

    $devTestLabName = "<lab name>"
    $vMToStart = "<VM name>"
    
    # The action on the virtual machine (Start or Stop)
    $vmAction = "<Start or Stop>"
    
  3. Starten oder beenden Sie die VM basierend auf dem Wert, den Sie an $vmAction übergeben haben.

    # Get the lab information
    $devTestLab = Get-AzResource -ResourceType 'Microsoft.DevTestLab/labs' -ResourceName $devTestLabName
    
    # Start or stop the VM and return a succeeded or failed status
    $returnStatus = Invoke-AzResourceAction `
                        -ResourceId "$($devTestLab.ResourceId)/virtualmachines/$vMToStart" `
                        -Action $vmAction `
                        -Force
    
    if ($returnStatus.Status -eq 'Succeeded') {
        Write-Output "##[section] Successfully updated DTL machine: $vMToStart, Action: $vmAction"
    }
    else {
        Write-Error "##[error] Failed to update DTL machine: $vMToStart, Action: $vmAction"
    }
    

Azure CLI-Skript

Das folgende Skript enthält Azure CLI zum Starten oder Beenden einer Lab-VM. Die Variablen in diesem Skript gelten für eine Windows-Umgebung, z. B. eine Eingabeaufforderung. Bash oder andere Umgebungen weisen geringfügige Abweichungen auf.

  1. Geben Sie die entsprechenden Werte für <Subscription ID>, <lab name>, <VM name> und die zu durchzuführende <Start or Stop>-Aktion an.

    set SUBSCRIPTIONID=<Subscription ID>
    set DEVTESTLABNAME=<lab name>
    set VMNAME=<VM name>
    set ACTION=<Start or Stop>
    
  2. Melden Sie sich bei Ihrem Azure-Konto an. Wenn Sie über mehrere Azure-Abonnements verfügen, können Sie die Auskommentierung der Zeile az account set aufheben, um die angegebene Abonnement-ID zu verwenden.

    az login
    
    REM az account set --subscription %SUBSCRIPTIONID%
    
  3. Ermitteln Sie den Namen der Ressourcengruppe, die das Lab enthält.

    az resource list --resource-type "Microsoft.DevTestLab/labs" --name %DEVTESTLABNAME% --query "[0].resourceGroup"
    
  4. Ersetzen Sie <resourceGroup> durch den Wert, den Sie im vorherigen Schritt ermittelt haben.

    set RESOURCEGROUP=<resourceGroup>
    
  5. Führen Sie die Befehlszeile aus, um die VM basierend auf dem Wert zu starten oder zu beenden, den Sie an ACTION übergeben haben.

    az lab vm %ACTION% --lab-name %DEVTESTLABNAME% --name %VMNAME% --resource-group %RESOURCEGROUP%
    

Nächste Schritte