无法在 Azure DevOPS 的资源组部署任务的覆盖参数中使用 PowerShell 脚本的输出变量

Unable to use output variables from a PowerShell script in the Override Parameters of a Resource Group deployment task in Azure DevOPS

我有一个 PowerShell 脚本,其中我使用以下语法生成了多个输出变量:

Write-Host ("##vso[task.setvariable variable=appObjectId;issecret=false]"+$appObjectId)

在 Azure DevOPS 的 PowerShell 任务中,我将输出变量设置如下:

然后,我在 Azure 资源组部署中使用我的输出变量,如下所示:

不幸的是,当我查看 Azure 中的部署详细信息时,我发现我的 ARM 的参数没有填写输出参数的值,而是填写了它的名称:

重要信息:ARM 部署任务在任务组内完成。我的 PowerShell 脚本在管道中,就在调用任务组之前。我试图将脚本放入任务组,但我遇到了完全相同的问题。

我认为您从 Powershell 脚本定义输出变量的格式可能有误,这应该可行 -

写入主机“##vso[task.setvariable变量=appObjectId;isOutput=true]$appObjectId”

更新

另外加的是isoutput=true,默认为false


因为您没有正确地将变量设置为 appObjectId。没有AADApplication.appClientid。然后 Azure DevOps 将其视为字符串。这就是为什么我的ARM的参数没有填写输出参数的值而是填写它的名称。

无需使用 () 来包含以下设置变量命令。

SetVariable: 初始化或修改变量的值

##vso[task.setvariable]value

您应该使用以下语法:

Write-Host "##vso[task.setvariable variable=appClientID;issecret=false;isoutput=true]value"

更多详情请参考我们的官方文档here

我找到了根本原因:我需要在需要使用它的任务中包含参数“$(myParam)”。否则不计算。