我认为,我阅读了所有相关文章,但仍然无法完成这项工作。
我有一个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()
,它们都没有帮助。请告知,将此对象传递到脚本的正确方法是什么。
答案 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"}
测试结果: