你当前正在访问 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 运行映像工厂。
先决条件
- 开发测试实验室中的实验室 VM。
- 对于 Azure PowerShell,在工作站上安装了 Az PowerShell 模块。 确保你有最新版本。 如有必要,请运行
Update-Module -Name Az
以更新模块。 - 对于 Azure CLI,在工作站上安装了 Azure CLI。
Azure PowerShell 脚本
以下 PowerShell 脚本使用 Invoke-AzResourceAction 在实验室中启动或停止 VM。
ResourceId
参数是要启动或停止的实验室 VM 的完全限定的 ID。
Action
参数确定是启动还是停止 VM,具体取决于你所需要的操作。
从工作站使用 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>"
为
<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>"
根据传递给
$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 或其他环境略有不同。
为
<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>
登录 Azure 帐户。 如果有多个 Azure 订阅,请取消注释
az account set
行,以使用提供的订阅 ID。az login REM az account set --subscription %SUBSCRIPTIONID%
获取包含实验室的资源组的名称。
az resource list --resource-type "Microsoft.DevTestLab/labs" --name %DEVTESTLABNAME% --query "[0].resourceGroup"
将
<resourceGroup>
替换为从上一步获取的值。set RESOURCEGROUP=<resourceGroup>
运行命令行,根据传递到
ACTION
的值启动或停止 VM。az lab vm %ACTION% --lab-name %DEVTESTLABNAME% --name %VMNAME% --resource-group %RESOURCEGROUP%