我有一个Azure管道,它维护一个保存项目名称变量-假设parameters.projects
保存projectA, projectB, projectC
我希望执行foreach循环并对每个项目执行一个操作。
我目前使用
- ${{ each Project in parameters.projects}}:
- task: PowerShell@2
displayName: "operation on [${{ Project }}]."
inputs:
targetType: 'inline'
workingDirectory: $(System.DefaultWorkingDirectory)
script: |
New-Item -Path '$(Build.ArtifactStagingDirectory)\${{ Project }}' -ItemType Directory
....
在上面的例子中,foreach参数(迭代值)是azure的,这意味着它将为管道中的每个项目生成一个任务。这是可行的,但速度很慢。
我希望能经营...
- task: PowerShell@2
displayName: "operation on [${{ Project }}]."
inputs:
targetType: 'inline'
workingDirectory: $(System.DefaultWorkingDirectory)
script: |
foreach ($Project in ${{ parameters.projects }})
{
New-Item -Path '$(Build.ArtifactStagingDirectory)\${{ Project }}' -ItemType Directory
....
}
但是我不确定语法,也找不到有用的解释/例子。
什么是正确的语法?也是一个描述网页,它也有用。
1条答案
按热度按时间jjhzyzn01#
运行时参数使您可以更好地控制哪些值可以传递到管道。使用运行时参数,您可以:
在运行时为脚本和任务提供不同的值控制参数类型、允许的范围和默认值使用模板表达式动态选择作业和阶段
因此,当前脚本的语法是正确的。
我测试了对象类型参数;无法在PowerShell工作中使用。
你可以尝试使用字符串类型参数并拆分字符串for循环。
YAML,例如:
如需详细信息,请参阅执行阶段参数。