Как проверить, содержит ли вывод команды «ошибка»? - PullRequest
0 голосов
/ 01 июня 2019

У меня есть 2 сценария powershell

script1.ps1 содержит вызовы REST для Vault, который возвращает ответ json, содержащий некоторые ключи / значения.

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
}

getValues $token

Как видите, метод требует $token.

Этот токен сохранен в системной переменной.

Теперь я звоню script1 в script2, чтобы получить ключи / значения, подобные этому:

$resp = & ".\script1.ps1" | convertfrom-json

это прекрасно работает, и я получаю значения по мере необходимости.

однако я тестирую, если в будущем появятся ошибки, например, путем удаления токена из системной переменной.

Это $resp вернуло:

errors                
------                
{missing client token}

большой. Теперь я хочу выйти из сценария, если это произойдет.

Я попытался проверить, как это:

if($resp.tostring().contains("error"))
{
   write-output "error!"
    exit 1
}

но он никогда не завершался и не возвращал ошибку вывода!

как мне найти совпадение в этом случае?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...