Предположим, у меня есть script1.ps1
со следующим кодом:
Function Renew_Token($token) {
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("X-Vault-Token", $token)
$response = Invoke-RestMethod -method POST -uri "https://vault.com:8243/v1/auth/token/renew-self" -ContentType 'application/json' -headers $headers
$response| ConvertTo-Json -depth 100
}
Function getValues($token) {
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("X-Vault-Token", $token)
$response = Invoke-RestMethod -method GET -uri "https://vault.com:8243/v1/secret/vault/development" -ContentType 'application/json' -headers $headers
$response.data| ConvertTo-Json -depth 100
}
Renew_Token $token
write-host "token renewed!"
write-host "Vault Values:"
getValues $token
Это возвращает мне ответ, подобный этому:
{
"request_id": "ghgdf5-yuhgt886-gfd76trfd",
"lease_id": "",
"renewable": false,
"lease_duration": 0,
"data": null,
"wrap_info": null,
"warnings": null,
"auth": {
"client_token": "i657ih4rbg68934576y",
"accessor": "t543qyt54y64y654y",
"policies": [
"default",
"vault"
],
"token_policies": [
"default",
"vault"
],
"metadata": null,
"lease_duration": 2000,
"renewable": true,
"entity_id": ""
}
}
token renewed!
Vault Values:
{
"abc": "1234",
"def": "897",
"klm": "something12"
}
Теперь рассмотрим в Script2.ps1
, яВызовите script1
$second_response = & ".\Script1.ps1"
. Конечно, $second_response
сохранит 2 ответа выше в качестве вывода.
Как я могу сохранить ПРОСТО второй ответ, как говорят ключи / значения в таблице в Script2?то есть эта часть:
{
"abc": "1234",
"def": "897",
"klm": "something12"
}
$HashTable = @{ }
$HashTable.Add($second_response.key, $second_response.value)
другими словами, каким-то образом переменная $second_response
должна хранить только эти выходные данные:
{
"abc": "1234",
"def": "897",
"klm": "something12"
}
Примечание: этот второй ответ значительно динамичен.Это означает, что в разных средах могут быть разные значения.поэтому я хочу иметь возможность ДИНАМИЧЕСКИ хранить все, что есть в этом ответе, а не жестко кодировать значения
Кроме того, мне нужны 2 ответа в сценарии 1, потому что я использую script1 для других целей, таких как, скажем, хочутолько просматривать содержимое хранилища.У script2 будут операции над ответом от script1, поэтому я выделил их для удобства и гибкости
ОБНОВЛЕНИЕ: Следуя предложению @kuzimoto, я удалил выходные данные и преобразовал ответ обратно из JSON, я получил эти выходные данные изСкрипт2:
abc: 1234
def: 897
klm: something12