wen*_*nbo 6 azure devops azure-devops azure-pipelines
我想在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"
}
任何人都可以展示一些这方面的经验吗?谢谢
建议仅将变量作为字符串传递。如果要将对象传递给其他任务,可以使用“ConvertTo-Json -Compress”将其转换为 json 字符串。
$objectString = $object | ConvertTo-Json -Compress
Write-Host "##vso[task.setvariable variable=objectString;]$objectString"
Run Code Online (Sandbox Code Playgroud)
在下一个 PS 任务中,您可以将其作为环境变量传递。但是,请将变量用单引号引起来。
然后您可以使用“ConvertFrom-Json”将字符串转换为对象。
$getFromEnv = $env:objectString | ConvertFrom-Json
foreach( $obj in $getFromEnv){
Write-Host ("displayName:{0} Id:{1}" -f $obj.displayName, $obj.Id)
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我只是将变量作为字符串传递,然后将其拆分以在 PowerShell 中创建一个数组
变量 = 产品 1、产品 2、产品 3
$array = $variable.Split(',)
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以在末尾添加修剪,以防有空格
变量 = 产品 1、产品 2、产品 3
$array = $workspaces.Split(',').trim()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10722 次 |
| 最近记录: |