在Powershell中从表输出中删除项目

时间:2018-10-04 15:19:12

标签: api powershell

因此,尽管最终产品将是一个列表,但我有一个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, ...

执行此操作的最佳方法是什么?将表写入文本文件并逐行处理文件?我希望避免解析另一个字符串,并希望缩小脚本中打印的数据范围,但是我当然会接受任何有助于找到最佳简单解决方案的答案!

谢谢!

1 个答案:

答案 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

这应该从表中删除不需要的条目。