我正在尝试从Azure DevOps构建代理中调用rest api。为此,我需要可以通过以下方式进入本地计算机的bearertoken:
$accessToken = ((Get-AzContext).TokenCache.ReadItems() | Where { $_.TenantId -eq (Get-AzContext).Tenant } | Sort-Object -Property ExpiresOn -Descending)[0].AccessToken
但是,在构建代理上,它从不返回任何令牌。我还有其他方法可以尝试获取该令牌吗?
答案 0 :(得分:1)
您是否已在“代理”设置中启用“允许脚本访问OAuth令牌”设置?
这将是使用可视化设计器进行的构建和发行。
有关YAML构建,请参见the predefined variable documentation。有关在脚本中使用“ System.AccessToken”变量的说明。本质上,必须使用变量将System.AccessToken显式映射到管道中。您可以在步骤或任务级别执行此操作:
steps:
- bash: echo This is a script that could use $SYSTEM_ACCESSTOKEN
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
- powershell: Write-Host "This is a script that could use $env:SYSTEM_ACCESSTOKEN"
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
答案 1 :(得分:0)
感谢您的建议和想法。答案太简单,无法弄清楚。我撕掉了大部分的oneliner,现在仅使用以下命令即可发挥作用:
$accessToken = ((Get-AzContext).TokenCache.ReadItems()