是否可以在Azure DevOps“变量组”中定义数组变量

时间:2019-07-24 03:31:59

标签: azure azure-devops azure-pipelines devops

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

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

1。在我使用的azure devops脚本中,出现了错误

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

2。在本地作品中位于Powershell下方

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

任何人都可以展示一下有关此方面的经验吗?谢谢

2 个答案:

答案 0 :(得分:1)

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

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

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

enter image description here

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

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

答案 1 :(得分:1)

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

变量= Prod1,Prod2,Prod3

$array = $variable.Split(',)

如果需要的话,可以在末尾添加一个修剪

变量= Prod1,Prod2,Prod3

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