我有一个 groovy 中的键值对集合,例如在 Jenkins 管道中
def procedureParameters = [:]
procedureParameters.put('key','value')
我正在尝试将其传递给 powershell 脚本 -
def exitCode = powershell """
\$parameters = @{
${procedureParameters}
}
"""
上面只是一个(不起作用)示例,但最终我想在 powershell 中有一个哈希表来反映我拥有的常规映射。
我将单个变量传递给 powershell 没有任何问题。但我找不到用集合来做到这一点的方法。在我开始将映射序列化为字符串然后在 powershell 端反序列化之前,有没有一种好方法可以做到这一点?
经过多次尝试和错误,这是一个可行的解决方案。它仍然需要将地图序列化为字符串。但至少powershell端不需要进一步处理。这就是常规的管道代码:
def powershellInput = "@{"
procedureParameters.each { key, value ->
powershellInput += "\"$key\"=\"$value\"; "
}
powershellInput += "}"
powershell
"""
[HashTable]$parameters = ${powershellInput}
"""
另一种选择是将其传递给环境变量中的 powershell。但我没能成功。