【问题标题】:Output variable in Azure Devops looses everything after first line breakAzure Devops 中的输出变量在第一个换行符后丢失所有内容
【发布时间】:2021-02-05 15:15:53
【问题描述】:
我在内联 PS 脚本中获取文件的内容:
$text = Get-Content $(FilePath) -Raw
#everything gets printed
Write-Host $text
#I save it in the variable
Write-Host "##vso[task.setvariable variable=testvar;]$text"
然后在下游(下一个)PS 任务中,我引用该变量:
Write-Host $(testvar)
并且只打印文件内容的第一行。为什么会这样,我如何保留所有内容?
【问题讨论】:
标签:
powershell
azure-devops
azure-pipelines-release-pipeline
【解决方案1】:
看起来像multi-line string variables aren't supported。
正如该答案中所建议的,您可以对整个字符串进行 base64 编码并将其用作变量值:
$text = Get-Content $(FilePath) -Raw
# encode string as UTF8 byte array, encode byte array as base64 string
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($text))
# set variable value to base64
Write-Host "##vso[task.setvariable variable=testvar;]$b64"
然后在下游任务中:
$text = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($testVar))
Write-Host $text