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

如何在Azure Pipelines(YAML)中传递参数运行PowerShell部署脚本

Azure Pipeline 实现方案

1. 配置可自定义的入参

有两种常用方案可选,都支持运行前/运行时修改值:

方案A:使用流水线变量(适合需要后台预设默认值的场景)

在YAML头部定义变量,同时在Azure DevOps流水线配置页开启「允许用户在运行此管道时重写此值」:

variables:
  # 应用名默认值,运行时可修改
  - name: ApplicationName
    value: 'HelloWorldApp'
  # 环境参数,多个用英文逗号分隔,单个直接写环境名即可
  - name: Environment
    value: 'DEV,SIT,UAT'

方案B:使用运行时参数(适合运行时手动选择的场景)

直接在YAML头部定义参数,运行流水线时会自动弹出参数填写/选择框,还可以限制可选值避免输入错误:

parameters:
  - name: ApplicationName
    type: string
    default: 'HelloWorldApp'
  # 单选环境的配置
  - name: Environment
    type: string
    default: DEV
    values:
      - DEV
      - SIT
      - UAT
      - PROD
  # 多选环境的配置(和单选二选一即可)
  - name: MultiEnvironment
    type: object
    default:
      - DEV
      - SIT

2. 调用PowerShell脚本传递参数

使用Azure PowerShell任务引用Repo中的脚本,把上面定义的变量/参数传入即可,完全复刻本地执行逻辑:

对应变量方案的任务配置

- task: AzurePowerShell@5
  inputs:
    azureSubscription: '替换为你的Azure服务连接名称'
    # 替换为脚本在你Repo中的实际路径
    ScriptPath: '$(Build.SourcesDirectory)/DeployApps.ps1'
    # 逗号分隔的环境字符串转数组后传入,和本地声明数组的逻辑完全一致
    ScriptArguments: '-ApplicationName $(ApplicationName) -Environment @($(Environment).Split(','))'
    azurePowerShellVersion: 'LatestVersion'

对应参数方案的任务配置

- task: AzurePowerShell@5
  inputs:
    azureSubscription: '替换为你的Azure服务连接名称'
    ScriptPath: '$(Build.SourcesDirectory)/DeployApps.ps1'
    # 多选环境用这段
    ScriptArguments: '-ApplicationName ${{ parameters.ApplicationName }} -Environment ${{ parameters.MultiEnvironment }}'
    # 单选环境用这段
    # ScriptArguments: '-ApplicationName ${{ parameters.ApplicationName }} -Environment @(${{ parameters.Environment }})'
    azurePowerShellVersion: 'LatestVersion'

补充说明

  • 单环境场景不需要额外调整逻辑,无论是变量传入单个值还是单选参数,最终传给脚本的都是符合要求的单元素数组
  • 所有参数值都可以在运行流水线时手动修改,不需要改动YAML代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:24:03