Partilhar via


Use comandos para iniciar e parar VMs do DevTest Labs

Este artigo mostra como você pode usar os comandos do PowerShell ou da CLI do Azure para criar scripts ou automatizar o início ou a parada para VMs do Azure DevTest Labs. Por exemplo, você pode usar os comandos start ou stop para:

  • Teste um aplicativo de três camadas onde as camadas precisam começar em uma sequência.
  • Desative suas VMs para economizar custos quando elas atenderem aos critérios personalizados.
  • Inicie e pare uma VM quando um fluxo de trabalho de integração contínua e entrega contínua (CI/CD) começar e terminar. Para obter um exemplo desse fluxo de trabalho, consulte Executar uma fábrica de imagens do Azure DevOps.

Observação

Você também pode iniciar, parar ou reiniciar VMs do DevTest Labs usando o portal do Azure. Os administradores de laboratório podem usar o portal para configurar agendas e políticas de inicialização edesligamento automático para VMs de laboratório.

Pré-requisitos

Iniciar ou parar uma VM

O seguinte script do PowerShell inicia ou para uma VM em um laboratório usando o cmdlet Invoke-AzResourceAction PowerShell. O ResourceId parâmetro é a ID totalmente qualificada para a VM de laboratório que você deseja iniciar ou parar. O Action parâmetro determina se a VM deve ser iniciada ou interrompida, dependendo da ação necessária.

  1. Se você usa o Cloud Shell, verifique se o ambiente do PowerShell está selecionado.

  2. Use o cmdlet PowerShell Connect-AzAccount para entrar em sua conta do Azure. Se tiveres várias assinaturas do Azure, descomenta Set-AzContext e fornece a assinatura que <SubscriptionId> desejas usar.

    $sub = Get-AzSubscription -ErrorAction SilentlyContinue
    if(-not($sub))
    {
        Connect-AzAccount
    }
    
    # Set-AzContext -SubscriptionId "<Subscription ID>"
    
  3. Defina variáveis fornecendo os seus próprios valores para <lab name>, <VM name> e quanto ao que fará para Start ou Stop a VM.

    $devTestLabName = "<lab name>"
    $vMToStart = "<VM name>"
    $vmAction = "<Start or Stop>"
    
  4. Inicie ou pare a VM, com base no valor que você 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"
    }