【问题标题】:PowerShell Hashtable as Azure Devops YAML Pipeline output VariablePowerShell 哈希表作为 Azure Devops YAML 管道输出变量
【发布时间】:2021-04-27 10:17:00
【问题描述】:

是否可以从 Azure DevOps YAML Pipeline PowerShell 任务输出哈希表,将其存储到管道变量,然后将哈希表传递给第二个 PowersShell 任务?接收脚本正在运行带有“-TemplateParameterObject”的“New-AzResourceGroupDeployment”命令行开关,它需要一个哈希表作为参数。

我只能在管道变量之间传递字符串。我相信这证明了我在阶段/任务之间输出和接收变量的语法是正确的。我的理解是 Azure DevOps 管道变量存储字符串,引擎无法识别 PowerShell 哈希表。对吗?

有没有人能够将哈希表作为管道变量传递?

这是输出哈希表的代码:

$TemplateSecretObject = @{
   keyVaultObject       = $KeyVaultObject
   keyVaultSecretObject = $KeyVaultSecretObject
}
Write-Host "##vso[task.setvariable variable=keyVaultSecretTaskOutput;isOutput=true]$TemplateSecretObject"

【问题讨论】:

  • 嗨,这个问题有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒this
  • 您好,刚刚检查一下这个问题现在是否仍然阻碍您?这个问题有更新吗?
  • 我们决定将 JSON 传递给一个参数,然后我们的部署脚本使用 'convertfrom-json -AsHashtable' 来创建模板部署对象

标签: powershell azure-devops


【解决方案1】:

您应该能够将哈希表序列化为 JSON 字符串:

'##vso[task.setvariable variable=keyVaultSecretTaskOutput;isOutput=true]{0}' -f (
  $TemplateSecretObject | ConvertTo-JSON -Depth 100 -Compress
)

然后在您的脚本中将其转换回哈希表:

$hashtable = '$(SourceTaskName.keyVaultSecretTaskOutput)' | ConvertFrom-JSON -Depth 100 -AsHashtable

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 2021-01-20
    • 2020-08-27
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 2020-06-14
    • 2022-09-23
    • 2021-12-09
    相关资源
    最近更新 更多