Az Devops 命令在 Azure Pipelines(经典)中失败

Az Devops Commands Failing in Azure Pipelines (Classic)

我不知道为什么我不能 运行 使用经典模板在 Azure Pipeline 中使用基本的 az devops 命令。

基本上,我为我的经典管道定义了两个 Powershell 任务,它们是:

任务 1:使用以下命令登录到我的 Azure DevOps 组织:

$mytoken = "My_PersonalAccessToken"
echo $mytoken "|" az devops login --organization https://dev.azure.com/OrganisationName

任务 2:列出我的 Azure DevOps 项目

az devops project list

任务 1 完美运行并确认登录成功。

然而,

任务 2 失败并在管道输出中显示以下错误:

 Before you can run Azure DevOps commands, you need to run the login command(az login if using AAD/MSA identity else az devops login if using PAT token) to setup credentials.  Please see https://aka.ms/azure-devops-cli-auth for more information.

我做错了什么?非常感谢您的帮助,尽管我必须再次强调我的管道使用经典模板并且任何建议的解决方案都必须为此量身定制。

请注意,当我在我的 Powershell ISE 编辑器中 运行 这些完全相同的命令时,两者都 运行 完美并且我列出了我所有的 Azure DevOps 项目。

可能最近出现了产品问题,因为 Azure CLI 应该可以用,上个月它对我有用,请参阅

目前,如果您想列出项目,可以直接在 PowerShell 任务中调用 REST API Projects - List

$MyPat = '<PAT>'
$B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$MyPat"))
$URL = 'https://dev.azure.com/orgname/_apis/projects?api-version=6.0'
$header = @{
    'Authorization' = 'Basic ' + $B64Pat
    'Content-Type' = 'application/json'
}

Invoke-RestMethod -Method Get -Uri $URL -Headers $header| ConvertTo-Json

我看到将 StdIn 上的 PAT 管道传输到 az devops login 失败。但是,恕我直言,更好的方法是设置 AZURE_DEVOPS_EXT_PAT 环境变量,并且根本不使用 az devops login。 :)

管道变量:

任务:

查看 Sign in with a personal access token (PAT) 了解更多详情。