你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用命令行启动和停止开发测试实验室虚拟机

本文介绍如何使用 Azure PowerShell 或 Azure CLI 命令行和脚本启动或停止 Azure 开发测试实验室虚拟机 (VM)。

可以使用 Azure 门户启动、停止或重启开发测试实验室 VM。 还可以使用门户为实验室 VM 配置自动启动自动关闭计划和策略。

需要为实验室 VM 编写脚本或自动完成启动或停止操作时,请使用 PowerShell 或 Azure CLI 命令。 例如,可以使用启动或停止命令来执行以下操作:

  • 测试一个三层应用程序,其中的层需要按顺序启动。
  • 当 VM 满足自定义条件时,关闭 VM 以节省成本。
  • 在持续集成和持续交付 (CI/CD) 工作流开始时启动,在其完成时停止。 有关此工作流的示例,请参阅从 Azure DevOps 运行映像工厂

先决条件

Azure PowerShell 脚本

以下 PowerShell 脚本使用 Invoke-AzResourceAction 在实验室中启动或停止 VM。 ResourceId 参数是要启动或停止的实验室 VM 的完全限定的 ID。 Action 参数确定是启动还是停止 VM,具体取决于你所需要的操作。

  1. 从工作站使用 PowerShell Connect-AzAccount cmdlet 登录到 Azure 帐户。 如果有多个 Azure 订阅,则取消注释 Set-AzContext 行,并填充要使用的 <Subscription ID>

    # Sign in to your Azure subscription
    $sub = Get-AzSubscription -ErrorAction SilentlyContinue
    if(-not($sub))
    {
        Connect-AzAccount
    }
    
    # Set-AzContext -SubscriptionId "<Subscription ID>"
    
  2. <lab name><VM name> 提供值,并为 <Start or Stop> 输入你所需要的具体操作。

    $devTestLabName = "<lab name>"
    $vMToStart = "<VM name>"
    
    # The action on the virtual machine (Start or Stop)
    $vmAction = "<Start or Stop>"
    
  3. 根据传递给 $vmAction 的值启动或停止 VM。

    # 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 脚本

以下脚本提供了用于启动或停止实验室 VM 的 Azure CLI 命令。 此脚本中的变量适用于 Windows 环境,例如命令提示符。 Bash 或其他环境略有不同。

  1. <Subscription ID><lab name><VM name> 和要执行的 <Start or Stop> 操作提供适当的值。

    set SUBSCRIPTIONID=<Subscription ID>
    set DEVTESTLABNAME=<lab name>
    set VMNAME=<VM name>
    set ACTION=<Start or Stop>
    
  2. 登录 Azure 帐户。 如果有多个 Azure 订阅,请取消注释 az account set 行,以使用提供的订阅 ID。

    az login
    
    REM az account set --subscription %SUBSCRIPTIONID%
    
  3. 获取包含实验室的资源组的名称。

    az resource list --resource-type "Microsoft.DevTestLab/labs" --name %DEVTESTLABNAME% --query "[0].resourceGroup"
    
  4. <resourceGroup> 替换为从上一步获取的值。

    set RESOURCEGROUP=<resourceGroup>
    
  5. 运行命令行,根据传递到 ACTION 的值启动或停止 VM。

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

后续步骤