【问题标题】:Can an array variable defined in Azure DevOps "variable group"Azure DevOps“变量组”中定义的数组变量可以吗
【发布时间】:2019-07-24 03:31:59
【问题描述】:

我想在 Azure devops“变量组”中定义一些变量,这些变量将在 Powershell 中使用,但是当变量类型是字符串时它可以工作,但有些是数组或对象出错。我的看起来像下面。左边是名称,右边是

vmAlertedArray_backup => @("wbubuntu","wbubuntu2")

1.当我使用azure devops脚本时,出错了

$vmAlertedArray_backup = $env:vmAlertedArray_backup foreach($c in $vmAlertedArray_backup){ Write-Host "$c" }

2.below in powershell in local works

$vmAlertedArray_backup = @("wbubuntu","wbubuntu2") foreach($c in $vmAlertedArray_backup){ Write-Host "$c" }

谁能介绍一下这方面的经验?谢谢

【问题讨论】:

    标签: azure azure-devops azure-pipelines devops


    【解决方案1】:

    建议只将变量作为字符串传递。如果要将对象传递给其他任务,可以使用“ConvertTo-Json -Compress”将其转换为json字符串。

    $objectString = $object | ConvertTo-Json -Compress
    Write-Host "##vso[task.setvariable variable=objectString;]$objectString"
    

    在下一个 PS 任务中,您可以将其作为环境变量传递。但是,请用单引号将变量括起来。

    然后你可以使用“ConvertFrom-Json”将字符串转换为对象。

    $getFromEnv = $env:objectString | ConvertFrom-Json
    foreach( $obj in $getFromEnv){
        Write-Host ("displayName:{0} Id:{1}" -f $obj.displayName, $obj.Id)
    } 
    

    【讨论】:

      【解决方案2】:

      我只是将变量作为字符串传入,然后将其拆分以在 PowerShell 中创建一个数组

      变量 = Prod1,Prod2,Prod3

      $array = $variable.Split(',)
      

      如果需要,您可以在末尾添加修剪以防有空格

      变量 = Prod1,Prod2 ,Prod3

      $array = $workspaces.Split(',').trim()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-22
        • 2020-07-19
        • 1970-01-01
        • 2011-07-01
        • 2020-07-24
        • 2019-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多