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

时间:2020-06-28 15:50:28

标签: variables azure-devops hashtable

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

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

写输出“ ## vso [task.setvariable variable = MyVariable] $ VariableValue”

如果我试图创建一个STRING变量,那似乎工作得很好。但是我似乎无法使它适用于某个对象。特别是哈希表。但是,我非常成功地创建了一个值为$(MyHashtable)的变量,该变量的值为“ System.Collections.Hashtable”。可悲的是,这并不是我的目标。

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

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

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