首页 文章

无法解析ARM输出VSTS任务

提问于
浏览
1

我们使用VSTS来部署ARM模板 . (Azure部署任务版本:2) . 在此任务中,我们可以配置输出变量 . 将在此变量中输出ARM模板的json输出 . 在我的例子中,它被称为armOutputJson .

在下一个任务中,我有一个内联的PowerShell脚本,它试图将此值转换为powershell对象 .

$outputObject = ConvertFrom-Json -InputObject @"
$(armOutputJson)
"@
Write-Host "##vso[task.setvariable variable=armOutput]"$outputObject
Write-Host $outputObject

输出似乎像这样写入主机:

@{storageAccountName=; functionAppName=}

看起来设置没有正确解析?此外,当尝试使用$(armOutput).functionAppName.value在我的部署任务中访问此变量时,出现以下错误:

[错误]错误:资源'@ . functionAppName.value'不存在 . 资源应该在部署之前存在 .

任何人都知道我如何解析输出json到一个vsts变量并在另一个任务中使用它?

2 回答

  • 0

    尝试调用Format-Custom来格式化输出 $outputObject | Format-Custom -Depth 5

    Related issue ConvertFrom-Json not deep?

  • 0

    你做得差不多,方法很好,只是一些语法拼写错误 . 这应该工作(至少它适用于我):

    # parse string to json
    $outputObject = $(armOutputJson) | ConvertFrom-Json
    
    # outputObject is now object with more levels, 
    # printing it just like that does not help as each property contains nested objects
    
    # save temporary variable
    $storageAccountName = $outputObject.storageAccountName.value
    
    # export VSTS variable
    Write-Host "Setting Variable storageAccountName=$storageAccountName"
    Write-Host "##vso[task.setvariable variable=storageAccountName]$storageAccountName"
    

相关问题