Azure devops 将值从PowerShell脚本任务(变量)传递到同一代理作业内的后续任务
我在下面的链接中设置了一个任务中的变量,以便可以在同一代理作业中的另一个任务中使用它 在PowerShell脚本任务中,我使用了foll。要设置变量的行: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 在访问上
Write-Host "##vso[task.setvariable variable=sauce]crushed tomatoes"
isooutput=true
$(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),它就会工作