无法在 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)”。否则不计算。
我有一个 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)”。否则不计算。