我已经在论坛中几次看到这个问题,但是我还没有找到答案。我正在尝试在代理阶段的一项任务中创建哈希表的变量,然后使用powershell将其传递给另一项任务。具体来说,我试图在一个任务中构建一个哈希表变量,并将其作为安全对象参数传递给下一个ARM模板。
我看到的唯一“答案”是使用这样的写输出方法:
写输出“ ## vso [task.setvariable variable = MyVariable] $ VariableValue”
如果我试图创建一个STRING变量,那似乎工作得很好。但是我似乎无法使它适用于某个对象。特别是哈希表。但是,我非常成功地创建了一个值为$(MyHashtable)的变量,该变量的值为“ System.Collections.Hashtable”。可悲的是,这并不是我的目标。
任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
变量是字符串,不是对象,是故事的结尾。您不能在阶段之间传递对象。阶段可以在不同的代理程序上运行,并且代理程序可以在具有不同软件配置的完全不同的操作系统上。保证字符串在它们之间是可移植的。
这意味着您需要以可移植的格式(例如JSON)序列化和反序列化非字符串值。在PowerShell中,ConvertTo-Json -Compress
是您所追求的。