【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多