You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps发布任务:PowerShell文件如何使用内置变量?

在Azure DevOps部署组代理的PowerShell文件中使用内置变量的方法

不能直接在PowerShell文件里用$(System.DefaultWorkingDirectory)这类Azure DevOps内置变量的语法——内联脚本是Azure DevOps先解析替换变量后再执行,而本地PS文件是由代理直接运行,不会自动识别替换Azure DevOps的变量语法,这就是你移到文件后找不到路径的原因。

解决方法有两种:

1. 通过任务参数传递变量

在Azure DevOps的PowerShell任务配置中,找到「脚本参数」输入框,把需要的变量作为参数传入:

-WorkingDirectory $(System.DefaultWorkingDirectory)

然后在你的PowerShell文件里定义参数接收并使用:

param(
    [string]$WorkingDirectory
)

# 用接收的参数代替原变量语法
Get-ChildItem -Path $WorkingDirectory

2. 读取环境变量

Azure DevOps会把大部分内置变量注入为代理的环境变量,命名规则是将原变量的点替换为下划线,全部大写。比如System.DefaultWorkingDirectory对应的环境变量是SYSTEM_DEFAULTWORKINGDIRECTORY,可以直接在PS文件里读取:

$workingDir = $env:SYSTEM_DEFAULTWORKINGDIRECTORY

# 使用读取到的环境变量路径
Get-ChildItem -Path $workingDir

额外排查提示

部署组代理的工作目录逻辑和普通构建代理略有差异,如果你不确定变量对应的实际路径,可以先加一个内联PowerShell任务输出变量值:

Write-Host "System.DefaultWorkingDirectory: $(System.DefaultWorkingDirectory)"
Write-Host "环境变量对应值: $env:SYSTEM_DEFAULTWORKINGDIRECTORY"

对比输出结果和PS文件中使用的路径,确认是否一致。

内容的提问来源于stack exchange,提问作者Maytham Fahmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:58:28