首页 > 解决方案 > 将 PowerShell 任务中的变量集传递给另一个任务 (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 脚本中,我设置了 2 个变量,如下所示:

    $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 脚本中设置变量是否错误?

标签: azure-devopsyaml

解决方案


您可以尝试为第一个任务添加参考名称。例如:

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

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

这是因为在定义编辑器中,下游任务不会为临时脚本发布的输出变量获取变量名智能感知。您可以参考此文档了解详细信息。

此外,这里有一个博客,其中包含一些关于如何在 Azure Pipelines YAML 任务中传递变量的示例。


推荐阅读