问题描述
在这里不得不问这样一个问题的道歉,这是自学的Powershell用户。有一个问题,我似乎无法从GET Invoke-RestMethod的JSON返回值中获得我想要的值。
我正在尝试提取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的值,该字段有时也可能为空,稍后将在脚本中对其进行测试。知道我该怎么做吗?
谢谢!
解决方法
如果$tester
是具有属性fieldId
,label
和value
的对象,则可以使用member access的组合(语法{{1} })和Where-Object:
object.property
Select-Object也可以:
($tester | Where fieldId -eq 'customfield_10191').value
要返回包含特定客户的对象:
$tester | Where fieldId -eq 'customfield_10191' | Select-Object -Expand value