如何在Classic ADO Pipeline的两个PowerShell脚本间传递变量
Classic ADO Pipeline跨PowerShell任务传递变量问题解决办法
这种跨任务的变量传递是完全可以实现的,你遇到的报错是因为读取变量的语法错误,具体修正方案如下:
正确的变量设置与读取方式
1. 变量设置(「Set Solution Name」任务)
你的原有写法是正确的,无需修改:
Write-Host "::vso[task.setvariable variable=SolutionName;]$SolutionName"
若需要跨阶段传递变量,需添加
isoutput=true参数:Write-Host "::vso[task.setvariable variable=SolutionName;isoutput=true]$SolutionName"
2. 变量读取(「Get Solution Name」任务)
你之前用$SolutionNameFromTask = "$(SolutionName)"会被PowerShell解析为执行名为SolutionName的命令,导致报错。正确的读取方式有两种:
- 直接读取系统环境变量:
$SolutionNameFromTask = $env:SolutionName Write-Host "读取到的SolutionName:$SolutionNameFromTask" - 若需保留ADO宏语法风格,需通过环境变量间接引用:
$SolutionNameFromTask = "$($env:SolutionName)"
额外注意事项
- 变量名大小写敏感,确保设置和读取的变量名完全一致
- 跨阶段传递时,需先给「Set Solution Name」任务设置引用名称(在任务配置的「General」选项卡中设置),比如
SetSolutionNameTask,后续阶段读取时使用$(SetSolutionNameTask.SolutionName)
内容的提问来源于stack exchange,提问作者B-Rad
相关产品推荐
相关产品推荐

