Поделиться через


Использование команд для запуска и остановки виртуальных машин DevTest Labs

В этой статье показано, как использовать команды PowerShell или Azure CLI для сценариев или автоматизации запуска или остановки виртуальных машин Azure DevTest Labs. Например, можно использовать команды запуска или остановки для:

  • Протестируйте трехуровневое приложение, где уровни должны начинаться в последовательности.
  • Отключите виртуальные машины для экономии затрат, если они соответствуют пользовательским критериям.
  • Запуск и остановка виртуальной машины при запуске и завершении непрерывной интеграции и непрерывной доставки (CI/CD). Пример этого рабочего процесса см. в статье Запуск фабрики образов из Azure DevOps.

Примечание.

Вы также можете запускать, останавливать или перезапускать виртуальные машины DevTest Labs с помощью портала Azure. Администраторы лаборатории могут использовать портал для настройки расписания автоматического запуска и автоматического завершения работы виртуальных машин лаборатории.

Предпосылки

Запуск или остановка виртуальной машины

Следующий скрипт PowerShell запускает или останавливает виртуальную машину в лаборатории с помощью командлета Invoke-AzResourceAction PowerShell. Параметр ResourceId — это полный идентификатор виртуальной машины лаборатории, которую вы хотите запустить или остановить. Параметр Action определяет, следует ли запускать или останавливать виртуальную машину в зависимости от нужного действия.

  1. Если вы используете Cloud Shell, убедитесь, что выбрана среда PowerShell .

  2. Используйте командлет PowerShell Connect-AzAccount для входа в учетную запись Azure. Если у вас есть несколько подписок Azure, раскомментируйте Set-AzContext и укажите подписку <SubscriptionId>, которую вы хотите использовать.

    $sub = Get-AzSubscription -ErrorAction SilentlyContinue
    if(-not($sub))
    {
        Connect-AzAccount
    }
    
    # Set-AzContext -SubscriptionId "<Subscription ID>"
    
  3. Задайте переменные путем предоставления собственных значений для <lab name>, <VM name>а также того, следует ли использовать Start виртуальную машину или Stop виртуальную машину.

    $devTestLabName = "<lab name>"
    $vMToStart = "<VM name>"
    $vmAction = "<Start or Stop>"
    
  4. Запустите или остановите виртуальную машину в зависимости от переданного значения $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"
    }