我向ManageEngine
技术支持数据库发出了API请求,该请求返回一个JSON响应,该响应作为以下三个哈希表的自定义对象返回:$ result.response_status,$ result.list_info和$ result .requests其中的第三个包含我要查找的数据。
$results.requests.id
一个整数
$results.requests.subject
一个字符串
$results.requester
哈希表。
请求者哈希表为@requester{name= 'Martin Zimmerman'; email='mzimmer@company.com'}
我想做的是:
$results.requests | select id, subject, requester.name
仅显示一行ID,主题和请求者的姓名
id subject name
-- -------------- --------------
3329 Can't open file Martin Zimmerman
但是,我无法弄清楚提取请求者哈希表中名称键值的术语。
答案 0 :(得分:1)
我想这就是你想要的。您需要构建一个Calculated Property(示例10)。
$results.requests | Select-Object id,subject,@{l='name';e={$_.requester['name']}}
这种方法允许您从哈希表中调用名称键。
如果您的requester
项目是PSCustomObject,请尝试此操作。
$results.requests | Select-Object id,subject,@{l='name';e={$_.requester.name}}
使用类似的对象结构进行测试。
$results = New-Object psobject
$requests = New-Object psobject
$requests | Add-Member -MemberType NoteProperty -Name id -Value 2
$requests | Add-Member -MemberType NoteProperty -Name subject -Value "lol"
$hash = @{}
$hash.Add("email","mzimmerman@company.com")
$hash.Add("name","Martin Zimmerman")
$requests | Add-Member -MemberType NoteProperty -Name requester -Value $hash
$results | Add-Member -MemberType NoteProperty -Name requests -Value $requests
$results.requests | select id,subject,@{l='name';e={$_.requester['name']}}
id subject name
-- ------- ----
2 lol Martin Zimmerman
答案 1 :(得分:0)
啊... 非常感谢您的答复,实际上,在我重新开始之后,第一个衬套确实可以使用计算所得的属性正确工作。
$results.requests | Select-Object id,subject,@{l='name';e={$_.requester.name}}
我认为我的问题可能是:
我最终将API调用的输出存储为字符串,或者我引用了另一个变量。简而言之……对我而言,这是一个非常愚蠢的错误。有趣的是计算属性的整个概念……我以前从未遇到过。非常感谢您的帮助!