Partilhar via


Utilizar linhas de comandos para iniciar e parar máquinas virtuais do DevTest Labs

Este artigo mostra como iniciar ou parar Azure DevTest Labs máquinas virtuais (VMs) com Azure PowerShell ou scripts e linhas de comandos da CLI do Azure.

Pode iniciar, parar ou reiniciar VMs do DevTest Labs com o portal do Azure. Também pode utilizar o portal para configurar o arranque automático e agendamentos de encerramento automático e políticas para VMs de laboratório.

Quando quiser criar scripts ou automatizar o início ou a paragem das VMs de laboratório, utilize os comandos do PowerShell ou da CLI do Azure. Por exemplo, pode utilizar comandos de início ou paragem para:

  • Teste uma aplicação de três camadas, em que as camadas têm de ser iniciadas numa sequência.
  • Desative as VMs para poupar custos quando cumprirem critérios personalizados.
  • Comece quando um fluxo de trabalho de integração contínua e entrega contínua (CI/CD) começa e pare quando terminar. Para obter um exemplo deste fluxo de trabalho, veja Executar uma fábrica de imagens a partir do Azure DevOps.

Pré-requisitos

script de Azure PowerShell

O seguinte script do PowerShell inicia ou para uma VM num laboratório com Invoke-AzResourceAction. O ResourceId parâmetro é o ID completamente qualificado da VM de laboratório que pretende iniciar ou parar. O Action parâmetro determina se deve iniciar ou parar a VM, consoante a ação necessária.

  1. A partir da estação de trabalho, utilize o cmdlet PowerShell Connect-AzAccount para iniciar sessão na sua conta do Azure. Se tiver várias subscrições do Azure, anule o comentário da Set-AzContext linha e preencha a <Subscription ID> que pretende utilizar.

    # Sign in to your Azure subscription
    $sub = Get-AzSubscription -ErrorAction SilentlyContinue
    if(-not($sub))
    {
        Connect-AzAccount
    }
    
    # Set-AzContext -SubscriptionId "<Subscription ID>"
    
  2. Forneça valores para e <lab name><VM name>e e introduza a ação que pretende para <Start or Stop>.

    $devTestLabName = "<lab name>"
    $vMToStart = "<VM name>"
    
    # The action on the virtual machine (Start or Stop)
    $vmAction = "<Start or Stop>"
    
  3. Inicie ou pare a VM, com base no valor que passou para $vmAction.

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

Script da CLI do Azure

O script seguinte fornece comandos da CLI do Azure para iniciar ou parar uma VM de laboratório. As variáveis neste script destinam-se a um ambiente do Windows, como uma linha de comandos. O Bash ou outros ambientes têm ligeiras variações.

  1. Forneça os valores adequados para <Subscription ID>, <lab name>, <VM name>e a <Start or Stop> ação a tomar.

    set SUBSCRIPTIONID=<Subscription ID>
    set DEVTESTLABNAME=<lab name>
    set VMNAME=<VM name>
    set ACTION=<Start or Stop>
    
  2. Inicie sessão na sua conta do Azure. Se tiver várias subscrições do Azure, anule o comentário da az account set linha para utilizar o ID de subscrição que forneceu.

    az login
    
    REM az account set --subscription %SUBSCRIPTIONID%
    
  3. Obtenha o nome do grupo de recursos que contém o laboratório.

    az resource list --resource-type "Microsoft.DevTestLab/labs" --name %DEVTESTLABNAME% --query "[0].resourceGroup"
    
  4. Substitua <resourceGroup> pelo valor que obteve do passo anterior.

    set RESOURCEGROUP=<resourceGroup>
    
  5. Execute a linha de comandos para iniciar ou parar a VM, com base no valor que passou para ACTION.

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

Passos seguintes