将PowerShell任务中设置的变量传递给另一个任务(YAML)

时间:2020-05-28 19:21:23

标签: azure-devops yaml

我有一个执行以下任务的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部分中),我看到以下错误:

[错误] InvalidContentLink:无法从'xxxx $(var1)'下载部署内容

[错误] InvalidContentLink:无法从'xxxx $(var2)'下载部署内容

我在PowerShell脚本中设置变量错误吗?

1 个答案:

答案 0 :(得分:3)

您可以尝试将引用名称添加到第一个任务。例如:

- task: AzurePowerShell@4
  displayName: 'script'
  inputs:
        azureSubscription: 
        ScriptPath: 
        ScriptArguments: 
        azurePowerShellVersion: LatestVersion
  name: test

然后在第二个任务中,以$(test.var1)的形式获取变量值。

这是因为在定义编辑器中,下游任务将不会获得由即席脚本发布的输出变量的变量名intellisense。您可以参考此document了解详情。

此外,这是blog,其中包含一些示例,说明如何在Azure Pipelines YAML任务中传递变量。