因此,尽管最终产品将是一个列表,但我有一个powershell脚本从API提取数据并将其作为格式化表返回。问题是,当我打印表格时,在最终输出中有一些我不想要的条目。这是我建立表格的方式:
Write-Output $xml.pnet_message_history_packet_response.imessage | Format-Table -Property @{Label="form_id"; Expression={$_.formdata.form_id}}
, ... other fields... ,
@{Label="Test"; Expression={$_.formdata.im_field.field_number}}
这是输出的样子:
form_id DriverName TrailerNumber TrailerHub DefectFound TractorDefect Field7 TractorDefectD TractorRemarks MoreTractorDef Field11 Field13 TrailerDefect Test
------- ---------- ------------- ---------- ----------- ------------- ------ -------------- -------------- -------------- ------- ------- ------------- ----
125413 {5, 6, 12,...
92477 1
125413 {5, 6, 12,...
52768 regglseton 4022 0 Yes Yes Windows Windows driver side... No Windows Windows {2, 3, 4, ...
52768 Robert F 4035 111 No {2, 3, 4, ...
53420 rs8 {8, 12, 13...
但是我想要的是删除所有form_id为52768的条目。我想返回相同的数据,但仅在form_id为52768的情况下。要进一步说明,我想要这样的输出:
form_id DriverName TrailerNumber TrailerHub DefectFound TractorDefect Field7 TractorDefectD TractorRemarks MoreTractorDef Field11 Field13 TrailerDefect Test
------- ---------- ------------- ---------- ----------- ------------- ------ -------------- -------------- -------------- ------- ------- ------------- ----
52768 regglseton 4022 0 Yes Yes Windows Windows driver side... No Windows Windows {2, 3, 4, ...
52768 Robert F 4035 111 No {2, 3, 4, ...
执行此操作的最佳方法是什么?将表写入文本文件并逐行处理文件?我希望避免解析另一个字符串,并希望缩小脚本中打印的数据范围,但是我当然会接受任何有助于找到最佳简单解决方案的答案!
谢谢!
答案 0 :(得分:1)
在传递到Format-Table
之前,请尝试使用Where-Object
通过form_id属性进行过滤:
Write-Output $xml.pnet_message_history_packet_response.imessage | Where-Object {$_.form_id -eq "52768"} | Format-Table
或使用in
运算符:
Write-Output $xml.pnet_message_history_packet_response.imessage | Where-Object {$_.form_id -in "52768"} | Format-Table
这应该从表中删除不需要的条目。