在 Azure Powershell 任务中使用 Azure DevOps 服务主体详细信息

Ben*_*nyM 9 azure-devops

在 Azure DevOps 管道中编写 Azure CLI 脚本时,您可以访问 serviceprincpal id、密钥和tenantid。有没有办法在 Azure Powershell 任务中获取此信息?

Lan*_*SFT 14

addSpnToEnvironment将您选择的 Azure 终结点的服务主体 ID 和密钥添加到脚本上下文的输入是仅在 Azure ClI Task 中可用的选项,Azure Powershell Task 中不可用。

有没有办法在 Azure Powershell 任务中获取此信息?

作为替代解决方法,我们可以在 中定义作业范围的变量Azure ClI Task,请查看此文档

测试步骤:

1.使用最新的Azure CLI task 2.0-preview并选择Powershell类型。尝试像这样的内联脚本:

Write-Host "##vso[task.setvariable variable=SpId;]$env:servicePrincipalId"

Write-Host "##vso[task.setvariable variable=SpKey;]$env:servicePrincipalKey"

Write-Host "##vso[task.setvariable variable=TenantId;]$env:tenantId"

Write-Host "##vso[task.setvariable variable=TestVar;]JustForTest"
Run Code Online (Sandbox Code Playgroud)

Azure Powershell task2.然后添加一项Azure CLI Task进行测试:

Write-Host $env:SpId

Write-Host $env:SpKey

Write-Host $env:TenantId

Write-Host $env:TestVar
Run Code Online (Sandbox Code Playgroud)

3.输出:

在此输入图像描述

Write-Host "##vso[task.setvariable variable=xxx]xxx"因此,如果您使用(Powershell)或(Batch)定义作业范围的变量echo "##vso[task.setvariable variable=xxx]xxx",则可以使用类似的方法$env:VariableName来访问信息。日志***中是因为这些是 Azure Devops 投射的秘密,所以它们被屏蔽了。