如何提取PSObject中friority为Medium的项并统计数量?
问题:筛选PSObject中friority为Medium的项并统计数量
我拥有一个PSObject,其结构如下:
IsGettable : True Value : @{friority=Medium;removedDate=;etc..}需求是提取其中
friority属性为Medium的项,并统计这类项的数量。尝试过使用select-object和get-member命令,但未成功。
更新:
按照建议,我已将该对象转换为JSON对象并写入文件,JSON结构如下:{ "data": [ { "id": 487777, "proVersion": null, "proName": null, "revision": 0, "folderId": 4555, "friority": "Medium" } ], "count": 567, "responseCode": 200 }为节省篇幅,省略了部分对象值。之后尝试了如下命令:
($projIssues | Where-Object { $_.data.friority -eq "Medium" })添加
.count后得到结果567,但这并非我需要的符合条件的项的数量。
解决方案
你当前的命令错误地将整个顶层对象作为筛选目标,而没有遍历data数组内的元素。正确的操作是先定位到data数组,再对数组中的每一项进行筛选:
# 筛选出data数组中friority为Medium的所有项 $mediumPriorityItems = $projIssues.data | Where-Object { $_.friority -eq "Medium" } # 统计符合条件的项数量 $mediumPriorityItems.Count
关键说明
$projIssues.data直接指向JSON结构中的数组集合,此时使用Where-Object会逐个检查数组内的每个对象- 你之前得到的567是顶层对象里的
count属性值(总条目数),并非筛选后的结果数
内容的提问来源于stack exchange,提问作者Hemi81
相关产品推荐
相关产品推荐

