是否可以将哈希 table 作为 AzureDevops 中的变量从一个代理阶段传递到另一个代理阶段

Is it possible to pass a hash table as a variable in AzureDevops from one agent phase to another

我在论坛上看到这个问题弹出了几次,但我还没有看到答案。我正在尝试在代理阶段的一个任务中创建哈希表的变量,并使用 powershell 将其传递给另一个任务。具体来说,我试图在一个任务中构建一个哈希表变量,并将其作为安全对象参数传递给下一个任务中的 ARM 模板。

我看到的唯一“答案”是使用这样的写输出方法:

写入输出“##vso[task.setvariable变量=MyVariable]$VariableValue

如果我尝试创建一个字符串变量,这似乎工作得很好。但我似乎无法让它为一个对象工作。特别是哈希表。然而,我已经非常成功地创建了一个值为“System.Collections.Hashtable”的 $(MyHashtable) 变量,遗憾的是这不是我的目标。

非常感谢任何帮助!谢谢!

变量是字符串,不是对象,故事结束。您不能在阶段之间传递对象。阶段可能 运行 在不同的代理上,代理可能位于具有不同软件配置的完全不同的操作系统上。保证字符串在它们之间是可移植的。

这意味着您需要以可移植格式序列化和反序列化非字符串值,例如JSON。在 PowerShell 中,ConvertTo-Json -Compress 就是您所追求的。