次の方法で共有


コマンドを使用して DevTest Labs VM を起動および停止する

この記事では、PowerShell または Azure CLI コマンドを使用して、Azure DevTest Labs VM の開始または停止をスクリプト化または自動化する方法について説明します。 たとえば、start または stop コマンドを使用して次のことができます。

  • 階層を順番に開始する必要がある 3 層アプリケーションをテストします。
  • VM をオフにして、カスタム条件を満たすときにコストを節約します。
  • 継続的インテグレーションと継続的デリバリー (CI/CD) ワークフローが開始および終了したら、VM を起動および停止します。

また、Azure portal を使用して DevTest Labs VM を起動、停止、または 再起動 することもできます。 ラボ管理者は、ポータルを使用して、ラボ VM の 自動起動自動シャットダウン のスケジュールとポリシーを構成できます。

[前提条件]

VM を開始または停止する

次の PowerShell スクリプトは、 Invoke-AzResourceAction PowerShell コマンドレットを使用してラボ内の VM を起動または停止します。 ResourceId パラメーターは、開始または停止するラボ VM の完全修飾 ID です。 Action パラメーターは、必要なアクションに応じて、VM を開始または停止するかどうかを決定します。

  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>、VM のStartまたはStopに独自の値を指定して変数を設定します。

    $devTestLabName = "<lab name>"
    $vMToStart = "<VM name>"
    $vmAction = "<Start or Stop>"
    
  4. $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"
    }