我有Azure DevOps发布管道作业,其中包含4个任务。
我想在第一个任务中设置环境变量,并将该值用作第二个任务的输入参数:显示名称。
我们可以假设所有4个步骤都是PowerShell脚本。
任务1 Powershell:
Write-Host "##vso[task.setvariable variable=myvariable;]abcdefg"
任务2 Powershell:
任务2中的PowerShell
Write-Host "$(myvariable)"
如何在任务1中设置变量并将其作为任务2的输入变量进行访问?
我的输出是:
任务2-以$(myvariable)作为显示名称
但是PowerShell脚本本身的输出为:
abcdefg
答案 0 :(得分:2)
写入主机“ ## vso [task.setvariable variable = myvariable;] abcdefg”
这是因为此脚本创建的变量不是预定义的变量。
作为执行逻辑,在对管道进行排队之后,即使不执行脚本,也可以看到首先显示了管道名称,任务名称。因此,如果这些名称使用变量来定义它们,则该变量只能从预定义变量中获取值。因为变量值的编译进入管道/任务名称总是比执行的脚本优先。
此外,任务中的脚本仅创建一个脚本变量,并且该脚本变量仅在Phase的生存期内有效,并在执行后被销毁。>
如何在任务1中设置变量并将其作为输入访问 任务2的变量?
根据需要,如果在另一个脚本中获取它,则只需使用$(xxx)
或$env:xxx
。但是,就名字而言,$()
可以获取预定义的变量值,而不是脚本变量值。