我有一个执行以下任务的yaml文件:
parameters:
steps:
- task: AzurePowerShell@4
displayName: 'script'
inputs:
azureSubscription:
ScriptPath:
ScriptArguments:
azurePowerShellVersion: LatestVersion
- task: AzureResourceGroupDeployment@2
displayName: 'deployment'
inputs:
azureSubscription:
resourceGroupName:
location:
overrideParameters: '-abc $(var1) -def $(var2)'
deploymentMode: 'Incremental'
在Powershell脚本中,我将如下设置两个变量:
$ABC = 1
$DEF = 2
Write-Host "##vso[task.setvariable variable=var1;isOutput=true]$ABC"
Write-Host "##vso[task.setvariable variable=var2;isOutput=true]$DEF"
在尝试在第二个任务中使用这些变量时(在overrideParameters部分中),我看到以下错误:
我在PowerShell脚本中设置变量错误吗?
答案 0 :(得分:3)
您可以尝试将引用名称添加到第一个任务。例如:
- task: AzurePowerShell@4
displayName: 'script'
inputs:
azureSubscription:
ScriptPath:
ScriptArguments:
azurePowerShellVersion: LatestVersion
name: test
然后在第二个任务中,以$(test.var1)
的形式获取变量值。
这是因为在定义编辑器中,下游任务将不会获得由即席脚本发布的输出变量的变量名intellisense。您可以参考此document了解详情。
此外,这是blog,其中包含一些示例,说明如何在Azure Pipelines YAML任务中传递变量。