我想在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"
}
任何人都可以展示一下有关此方面的经验吗?谢谢
答案 0 :(得分: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)
}
答案 1 :(得分:1)
我只是将变量作为字符串传递,然后将其拆分以在PowerShell中创建数组
变量= Prod1,Prod2,Prod3
$array = $variable.Split(',)
如果需要的话,可以在末尾添加一个修剪
变量= Prod1,Prod2,Prod3
$array = $workspaces.Split(',').trim()