Delen via


Opdrachten gebruiken om DevTest Labs-VM's te starten en te stoppen

In dit artikel wordt beschreven hoe u PowerShell- of Azure CLI-opdrachten kunt gebruiken om het starten of stoppen van azure DevTest Labs-VM's te scripten of te automatiseren. U kunt bijvoorbeeld start- of stopopdrachten gebruiken om het volgende te doen:

  • Test een driedelige toepassing waarin de lagen in een bepaalde volgorde opgestart moeten worden.
  • Schakel uw VM's uit om kosten te besparen wanneer ze voldoen aan aangepaste criteria.
  • Start en stop een VM wanneer een CI/CD-werkstroom (continue integratie en continue levering) begint en eindigt.

Opmerking

U kunt ook DevTest Labs-VM's starten, stoppen of opnieuw starten met behulp van Azure Portal. Labbeheerders kunnen de portal gebruiken om automatische opstart- en automatische afsluitschema's en beleidsregels voor lab-VM's te configureren.

Vereiste voorwaarden

Een VM starten of stoppen

Het volgende PowerShell-script start of stopt een VIRTUELE machine in een lab met behulp van de PowerShell-cmdlet Invoke-AzResourceAction . De ResourceId parameter is de volledig gekwalificeerde id voor de lab-VM die u wilt starten of stoppen. De Action parameter bepaalt of de virtuele machine moet worden gestart of gestopt, afhankelijk van welke actie u nodig hebt.

  1. Als u Cloud Shell gebruikt, controleert u of de PowerShell-omgeving is geselecteerd.

  2. Gebruik de Cmdlet PowerShell Connect-AzAccount om u aan te melden bij uw Azure-account. Als u meerdere Azure-abonnementen hebt, haalt u het commentaar weg bij Set-AzContext en geeft u de <SubscriptionId> op die u wilt gebruiken.

    $sub = Get-AzSubscription -ErrorAction SilentlyContinue
    if(-not($sub))
    {
        Connect-AzAccount
    }
    
    # Set-AzContext -SubscriptionId "<Subscription ID>"
    
  3. Stel variabelen in door uw eigen waarden op te geven voor <lab name>, <VM name>, en of u de virtuele machine wilt Start of Stop.

    $devTestLabName = "<lab name>"
    $vMToStart = "<VM name>"
    $vmAction = "<Start or Stop>"
    
  4. Start of stop de VM op basis van de door u $vmActiondoorgegeven waarde.

    # 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"
    }