将HashTable传递到PowerShell Runbook

时间:2018-11-27 11:59:32

标签: azure-powershell azure-automation

我认为,我阅读了所有相关文章,但仍然无法完成这项工作。 我有一个Azure Runbook,需要将HashTable参数传递到配置脚本。稍后由Apply-PnPTemplate函数使用。

脚本中声明为的参数

[System.Collections.Hashtable] $Parameters = @{}

但我也尝试过

[Object] $Parameters = @{}

我尝试测试我的脚本,将@{"customercode"="TEST"}添加为参数,但出现以下错误消息:

Cannot convert the "@{"customercode"="TEST"}" value of type "System.String" to type "System.Collections.Hashtable".

我尝试的方法:传递@和不传递;;(将分隔符更改为,(在PowerApps中也需要使用)和render(),它们都没有帮助。请告知,将此对象传递到脚本的正确方法是什么。

2 个答案:

答案 0 :(得分:0)

尝试一下;

[System.Collections.Hashtable] $Parameters = @{}
$Parameters.add("customercode","TEST")

答案 1 :(得分:0)

我也遇到过同样的问题,似乎总是将输入视为字符串。

我无法弄清原因,但这是一种解决方法:传递一个假的哈希表(字符串类型),然后在运行簿中,将字符串转换为哈希表。

下面的演示代码,希望对您有所帮助。

param([string]$mystr)

$mystr = $mystr.replace("=",":")

# pass the string to hashtable

$Parameters = @{}
$jsonobj = $mystr | ConvertFrom-Json
foreach($p in $jsonobj.psobject.properties){$Parameters[$p.name] = $p.value}

#print the keys

write-output "**the keys**"
$Parameters.keys

write-output "**the values**"

#print the values
$Parameters.values

我传递的参数:{"name"="jack","age"="11","city"="ddd"}

测试结果:

enter image description here