У меня есть скрипт, который получает ответ от другого скрипта в виде JSON,
$resp = & ".\script1.ps1" | ConvertFrom-Json
$resp[1]
, и я получаю следующий вывод:
abc : 1234
defghjk: 897
klm : something12
Теперь я хочу сохранить их как ключи /значения в хеш-таблице
$hash = @{}
$($resp[1]) | ForEach-Object {
# Split each pair into key and value
$key,$value = $_.Split(':')
# Populate $hash
$hash[$key] = $value
}
return $hash
Я получаю следующую ошибку:
Ошибка вызова метода, поскольку [System.Management.Automation.PSCustomObject] не содержит метод с именем «Split»
и
Ошибка операции индексации;индекс массива оценивается как ноль.При $ hash [$ key] = $ value
ОБНОВЛЕНИЕ: с этим я могу вывести ключ, значение и имя
$resp[1].PSObject.Properties | Foreach { $hash[$_.Key] = $_.Value }
return $hash
Я получаю обратно:
Key : abc
Value : 1234
Name: abc
Key : defghjk
Value : 897
Name: defghjk
и так далее ...
предположим, у меня есть таблица SQL следующим образом
![table](https://i.stack.imgur.com/714Eh.png)
и у меня есть следующий запрос для получения идентификатора:
$DB_ID = Query "select ID from table where DB = 'cube1'" | Select -ExpandProperty ID;
Как получить значение на основе $DB_ID
, сопоставить с ключом / именем и сохранить значение в переменнойскажем $password
?
другими словами, я ищу что-то вроде этого:
$password = $hash.value where $hash.key -match `$DB_ID`
так что тогда пароль в этом случае (cube1) будет: 1234, потому что ключ abcбудет соответствовать abc из таблицы
UPDATE2 : Теперь, когда я думаю об этом, мне, вероятно, даже не нужно было хэшировать ответ для начала.может я могу сделать что-то вроде этого, верно?:
$password = $resp[1].PSObject.Properties.value where $resp[1].PSObject.Properties.key -match $DB_ID