#powershell #rest #jira-rest-api #invoke-restmethod
#powershell #rest #jira-rest-api #вызов-restmethod
Вопрос:
Прошу прощения за то, что вынужден задать подобный вопрос, пользователь-самоучка powershell здесь. Возникла проблема, из-за которой я, похоже, не могу получить искомое значение из возврата JSON при GET Invoke-RestMethod.
Я пытаюсь извлечь данные билета JIRA, чтобы я мог проверить, было ли обновлено значение в пользовательском поле. Я попытался вызвать пользовательское поле непосредственно в ответе, однако из-за способа форматирования ответа он вернет только столбец данных, и поэтому я не могу использовать этот ответ в своем коде.
Мой код выглядит следующим образом:
$response = Invoke-RestMethod "https://jira-ceg.atlassian.net/rest/servicedeskapi/request/$JIRATICKET" -Method 'GET' -Headers $headers
$tester = $response.requestFieldValues
$tester
Ответ, который я получаю от JIRA, следующий:
fieldId label value
------- ----- -----
summary Summary STAFF-NEW - XXXX- NAME
customfield_10108 iTrent Information Employee ID: XXXX...
customfield_10086 Checklist Text --- ERROR - No Role Entitlement Found - Contact Service Admin
description Description A new employee has joined. Please process with the data above.
customfield_10191 New AD Address XXXX@XXXXX.com
Я хочу зафиксировать значение поля customfield_10191, поле иногда тоже может быть пустым, что я протестирую позже в скрипте. Есть идеи, как я мог бы это сделать?
Заранее спасибо!
Ответ №1:
Если $tester
это объект со свойствами fieldId
, label
и value
, вы можете использовать комбинацию доступа к члену (синтаксис object.property
) и Where-Object:
($tester | Where fieldId -eq 'customfield_10191').value
Select-Object также работает:
$tester | Where fieldId -eq 'customfield_10191' | Select-Object -Expand value
Чтобы вернуть объект, содержащий конкретного клиента:
$tester | Where fieldId -eq 'customfield_10191'
Комментарии:
1. Спасибо! Мне удалось заставить это работать сейчас, используя метод select-object. У меня были проблемы с заголовком, который все еще передавался в переменную, но я нашел здесь другую статью, в которой упоминалось -ft removeheader, которая полностью решила мою проблему. Спасибо, теперь скрипт работает отлично!