从 Visual Studio 团队服务创建 Azure 开发测试实验室 VM

Create Azure DevTest Lab VM from Visual Studio Team Services

我想在 Visual Studio Team Services 中创建一个 Azure 开发测试实验室 VM 作为构建过程的一部分。但是,当我 运行 构建时,出现以下错误:

******************************************************************************
Starting task: Create Azure DevTest Labs VM
******************************************************************************
Executing the powershell script: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents.102.0\tasks\AzureDevTestLabsCreateVM.0.7\New-AzureDtlVM.ps1
Looking for Azure PowerShell module at C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Azure.psd1
AzurePSCmdletsVersion= 1.3.2
Get-ServiceEndpoint -Name ***** -Context Microsoft.TeamFoundation.DistributedTask.Agent.Worker.Common.TaskContext
tenantId= ********
azureSubscriptionId= *****
azureSubscriptionName= *****
Add-AzureRMAccount -ServicePrincipal -Tenant ******** -Credential System.Management.Automation.PSCredential
Select-AzureRMSubscription -SubscriptionId ***** -tenantId ********
Starting Azure DevTest Labs Create VM Task
Task called with the following parameters:
  ConnectedServiceName  = *****
  LabId = *****
  TemplateName = C:\a\s\MVC app\azure-rm-template
  TemplateParameters = -newVMName 'builder' -userName 'admin' -password (ConvertTo-SecureString -String ***** -AsPlainText -Force)
  OutputResourceId = labVMId
Validating input parameters
Fetching lab *****
Microsoft.Azure.Commands.ResourceManager.Cmdlets.Entities.ErrorResponses.ErrorResponseMessageException: MissingSubscription : The request did not have a provided subscription. All requests must have an associated subscription Id.
at Microsoft.Azure.Commands.ResourceManager.Cmdlets.RestClients.ResourceManagerRestClientBase.<SendRequestAsync>d__24.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Commands.ResourceManager.Cmdlets.RestClients.ResourceManagerRestClientBase.<SendRequestAsync>d__20.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Commands.ResourceManager.Cmdlets.RestClients.ResourceManagerRestClientBase.<SendRequestAsync>d__1b`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResourceCmdlet.<GetResource>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResourceCmdlet.<GetResources>d__c.MoveNext()

我已使用服务主体将 VSTS 连接到 Azure,并且我正在使用 Microsoft (https://marketplace.visualstudio.com/items?itemName=ms-azuredevtestlabs.tasks) 提供的开发测试实验室任务。

这非常令人困惑,因为错误声称 "MissingSubscription" 但该任务的日志包含我所有的订阅信息?!?!

这可能是由于您在"Azure DevTest Labs Create VM"任务中输入的"Lab Name"不正确所致。确保您已在 Azure 门户中创建开发测试实验室,然后在 "Azure DevTest Labs Create VM" 任务中,您应该会在“实验室名称”的 drop-down 列表中看到它,从那里选择它。

如果实验室名称正确,您应该会在日志中看到与以下格式相同的 "LabID":

LabId = /subscriptions/subscriptionID/resourceGroups/resourcegroupname/providers/Microsoft.DevTestLab/labs/LabName