如何在Azure DevOps中通过Powershell任务循环数组参数

sulc1iza  于 2023-02-23  发布在  Shell
关注(0)|答案(1)|浏览(156)

我有一个包含两个可执行文件路径的参数,我希望循环通过它来签署每个可执行文件。为此,我使用了通过Azure DevOps中的模板传递的PowerShell@2任务。
我似乎没有通过我在模板代码中尝试过的任何方法正确地循环通过可执行数组。
循环数组参数的最佳方法是什么?谢谢您的帮助。
下面是我的最新代码:

parameters:
- name: executableList
  type: object
  default: []

steps:
- task: PowerShell@2
  displayName: 'Sign executables'
  inputs:
    targetType: 'inline'
    script: |
      #...more code here
          ${{ foreach (executable in  parameters.executableList) }} {
            & $signingExecutable sign /sm /s My /n "Sign Text" /tr http://rfc3161timestamp.globalsign.com/advanced /td sha256 /fd sha256 "$(Pipeline.Workspace)$executable"
          }

错误:扫描简单键时,找不到预期的“:”。

8hhllhi2

8hhllhi21#

您可以尝试convertToJson函数。小示例:

parameters:
- name: myArray
  type: object
  default: 
  - "1"
  - "2"
  - "4"
  - "8"
  - "16"

steps:
- task: PowerShell@2
  displayName: 'Sign executables'
  inputs:
    targetType: 'inline'
    script: |
     $mayarrstr= @"
     ${{ convertToJson(parameters.myArray) }}
     "@
     $myarr = ConvertFrom-Json $mayarrstr
     
     foreach ($myvalue in $myarr)
     {
       Write-Host "Value: " $myvalue
     }

相关问题