Azure Pipelines、托管 Ubuntu 代理和 Azure CLI 任务与 PowerShell Core:使用 Az 模块并正确进行身份验证

Azure Pipelines, Hosted Ubuntu Agent and Azure CLI Task with PowerShell Core: Use Az module and authenticate properly

我有几个使用 PowerShell Az 模块的 PowerShell 脚本 (Link)。由于某些要求,现在有必要 运行 在托管 Ubuntu 代理 (18.04) 上运行这些脚本。

所以我选择了 PowerShell Core 作为脚本类型的 Azure CLI 任务

我遇到的第一个问题是代理不知道 Az cmdlet。第二个问题是,即使 Az cmdlet 可用,也没有经过身份验证的上下文可以使用它们。

我该如何解决这两个问题?

首先需要在托管 Ubuntu 代理上安装 Az 模块。这可以通过执行脚本类型为 PowerShell Core 的 Azure CLI 任务来完成

Install-Module -Name Az -AllowClobber -Force

为了能够进行身份验证,必须在任务上启用

然后在 PowerShell 脚本中通过

进行身份验证
$tenantIdEnv = $env:tenantId
$spnIdEnv = $env:servicePrincipalId
$spnKeyEnvSecureString = ConvertTo-SecureString $env:servicePrincipalKey -AsPlainText -Force
$credentialsServicePrincipal = New-Object System.Management.Automation.PSCredential($spnIdEnv, $spnKeyEnvSecureString)
Connect-AzAccount -ServicePrincipal -TenantId $tenantIdEnv -Credential $credentialsServicePrincipal