Передача HashTable в PowerShell Runbook - PullRequest
0 голосов
/ 27 ноября 2018

Я думаю, что я прочитал все связанные посты, все еще не могу сделать эту работу.У меня есть книга выполнения Azure, для которой требуется параметр 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 тоже) и ,, никто из них не помог.Посоветуйте, пожалуйста, как правильно передать этот объект в скрипт.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

У меня возникла та же проблема, швы, что он всегда обрабатывает ввод как строку.

Я не могу выяснить причину, но здесь есть обходной путь: передайте поддельную хеш-таблицу (тип строки), затем вrunbook, преобразуйте строку в хеш-таблицу.

Демонстрационный код, как показано ниже, надеюсь, это поможет.

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

0 голосов
/ 29 ноября 2018

Попробуйте это;

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