Azure DevOps Pipeline中PowerShell设置输出变量无法后续调用问题
Azure DevOps Pipeline 动态输出变量正确使用方法
首先检查你的PowerShell代码,你写的语句少了闭合的双引号,先补上正确的写法:
Write-Host "##vso[task.setvariable variable=mytitle;isOutput=true]$content"
接下来分两种场景说明正确的引用方式:
同阶段内的后续任务引用
- 给生成变量的PowerShell任务设置一个任务名称,比如在任务配置的
Name字段填SetMyTitleVar - 后续任务里用
$(任务名称.变量名)的格式直接引用,示例:
如果是在PowerShell任务里引用,要转成环境变量格式(下划线替代点):$(SetMyTitleVar.mytitle)Write-Host "引用的变量值:$env:SetMyTitleVar_mytitle"
跨阶段引用
如果要在另一个阶段的任务里使用这个变量,需要额外配置阶段输出:
- 在生成变量的阶段定义输出:
stages: - stage: Build jobs: - job: SetVarJob steps: - powershell: | $content = "测试标题" Write-Host "##vso[task.setvariable variable=mytitle;isOutput=true]$content" name: SetMyTitleVar outputs: mytitle: $(SetMyTitleVar.mytitle) - 在后续阶段通过阶段依赖关系引用:
- stage: Deploy dependsOn: Build variables: inheritedTitle: $[ stageDependencies.Build.SetVarJob.outputs['SetMyTitleVar.mytitle'] ] jobs: - job: UseVarJob steps: - script: echo $(inheritedTitle)
关键注意点:
- 必须加上
isOutput=true,否则变量只能在当前PowerShell任务内部生效 - 任务名称尽量不要带空格,否则引用时需要用引号包裹,比如
$("Set My Title Var".mytitle)
内容的提问来源于stack exchange,提问作者sai
相关产品推荐
相关产品推荐

