我们使用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在我的部署任务中访问此变量时,我收到以下错误:
任何人都知道如何将输出json解析为vsts变量并在另一个任务中使用它?
答案 0 :(得分:0)
尝试调用Format-Custom格式化输出$outputObject | Format-Custom -Depth 5
答案 1 :(得分: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"