Azure devops 将值从PowerShell脚本任务(变量)传递到同一代理作业内的后续任务

Azure devops 将值从PowerShell脚本任务(变量)传递到同一代理作业内的后续任务,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,我在下面的链接中设置了一个任务中的变量,以便可以在同一代理作业中的另一个任务中使用它 在PowerShell脚本任务中,我使用了foll。要设置变量的行: Write-Host "##vso[task.setvariable variable=sauce]crushed tomatoes" 链接的下一节将展示如何读取变量-它有参数和脚本。我必须在哪里输入参数?它是否进入另一个powershell任务?下一部分建议,当变量需要由另一个任务使用时,我还需要设置isooutput=true 在访问上

我在下面的链接中设置了一个任务中的变量,以便可以在同一代理作业中的另一个任务中使用它

在PowerShell脚本任务中,我使用了foll。要设置变量的行:

Write-Host "##vso[task.setvariable variable=sauce]crushed tomatoes"
  • 链接的下一节将展示如何读取变量-它有参数和脚本。我必须在哪里输入参数?它是否进入另一个powershell任务?下一部分建议,当变量需要由另一个任务使用时,我还需要设置
    isooutput=true

  • 在访问上述步骤中设置的变量时,我感到困惑。如果我想在另一个PowerShell任务中获取该值,或者如果我想将该值传递给另一个非PowerShell任务,那么我应该使用
    $(saint)
    $env:saint
    来获取/发送该值吗


  • 是的,您可以通过另一个PowerShell任务读取变量,简单的方法是:

    • 对于内联脚本:

      写入主机$(sauce)

    • 对于文件脚本:

      写入主机$env:saint

    您不需要添加
    isooutput=true

    我的YAML:

    steps:
    - task: PowerShell@2
      displayName: 'Set var'
      inputs:
        targetType: filePath
        filePath: ./test.ps1
    
    - powershell: |
       Write-Host $(sauce)
     displayName: 'Read inline'
    
    - task: PowerShell@2
      displayName: 'Read from file'
      inputs:
        targetType: filePath
        filePath: ./read.ps1
    
    文件
    test.ps1
    为:

    文件
    read.pd1
    为:

    生成输出为:


    但链接上说:“这不会更新环境变量,但会使新变量可用于同一作业中的下游步骤。”。那么您是如何使用$env:sauce的呢?如果设置变量的powershell在文件中而不是在内联脚本中,那么我必须将isOutput设置为true,并为任务指定一个名称(比如“producer”)。然后在后续任务中将变量用作producer.sauce。是的,这是正确的,但除非使用isOutput=true,否则不能将$(saint)用作azure任务参数的一部分。您尝试过这个吗?是的,我尝试过这个,即使我不使用
    isOutput
    ,我也可以传递参数。对我来说,$(saint)不作为非powershell脚本的一部分工作(例如,如果我尝试将其作为参数的一部分使用)。如果我使用isOutput=true,然后使用$(producer.sauce),它就会工作