使用命令列啟動和停止 DevTest Labs 虛擬機器

本文章說明如何使用 Azure PowerShell 或 Azure CLI 命令列和指令碼來啟動或停止 Azure DevTest Labs 虛擬機器 (VM)。

您可以使用 Azure 入口網站來啟動、停止或重新啟動 DevTest Labs 虛擬機器。 您也可以使用入口網站來設定實驗室虛擬機器的自動啟動自動關機排程和原則。

當您想要編寫指令碼或自動啟動或停止實驗室虛擬機器時,請使用 PowerShell 或 Azure CLI 命令。 例如,您可以使用啟動或停止命令來:

  • 測試三層式應用程式,其中各階層需要按照序列啟動。
  • 關閉虛擬機器以便在符合自訂準則時節省成本。
  • 會在開始持續整合與持續傳遞 (CI/CD) 工作流程時啟動,並在完成時停止。 如需此工作流程的範例,請參閱從 Azure DevOps 執行影像中心

先決條件

Azure PowerShell 指令碼

下列 PowerShell 指令碼會使用 Invoke-AzResourceAction 來啟動或停止實驗室中的虛擬機器。 當您想要啟動或停止實驗室虛擬機器時,參數 ResourceId 是您可以使用的完整識別碼。 參數 Action 會根據您需要的動作來判斷是否啟動或停止虛擬機器。

  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 的值來啟動或停止虛擬機器。

    # 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 指令碼

下列指令碼提供用來啟動或停止實驗室虛擬機器的 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 行,以便使用您提供的訂用帳戶識別碼。

    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 的值來執行命令列以啟動或停止虛擬機器。

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

後續步驟