Azure DevOps Pipeline:向PowerShell内联任务传递参数
在PowerShell内联任务中传递和访问参数的方法
1. 直接引用管道/任务参数(以Azure DevOps为例)
如果是在CI/CD管道的PowerShell内联任务里,管道级或任务级定义的参数可以直接用${{ parameters.参数名 }}或者$(参数名)引用:
- 先在管道里定义参数:
parameters: - name: environment type: string default: 'dev'
- 内联脚本里直接调用:
Write-Host "当前部署环境: ${{ parameters.environment }}" # 如果是变量组里的变量,同样用$(变量名)调用 Write-Host "接口地址: $(ApiBaseUrl)"
2. 显式传递参数给脚本块
如果内联脚本需要结构化的参数,可以先在脚本里定义param块,再通过任务的arguments字段传参:
steps: - task: PowerShell@2 inputs: targetType: 'inline' script: | param( [string]$EnvName, [int]$MaxRetry ) Write-Host "环境名称: $EnvName" Write-Host "最大重试次数: $MaxRetry" arguments: '-EnvName ${{ parameters.environment }} -MaxRetry $(RetryCount)'
脚本里的param块会接收arguments里的参数,直接用变量名就能访问。
3. 访问系统预定义参数
系统自带的管道参数(比如分支名、构建ID)不需要额外定义,直接用预定义变量引用即可:
Write-Host "当前分支: $(Build.SourceBranchName)" Write-Host "构建编号: $(Build.BuildNumber)"
4. 参数转环境变量访问
你提到的$env变量也能用来读参数,只需要把管道参数映射到环境变量:
steps: - task: PowerShell@2 inputs: targetType: 'inline' script: | Write-Host "环境名(从环境变量读取): $env:TARGET_ENV" env: TARGET_ENV: ${{ parameters.environment }}
这样就把管道参数赋值给环境变量TARGET_ENV,再用$env:TARGET_ENV读取。
内容的提问来源于stack exchange,提问作者etalon11
相关产品推荐
相关产品推荐

