Итак, у меня есть сценарий 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
Marley Stacy 4 Окт 2018 в 18:19

1 ответ

Лучший ответ

Прежде чем подключаться к Format-Table, попробуйте выполнить фильтрацию по свойству form_id, используя Where-Object:

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

Это должно удалить ненужные записи из таблицы.

1
Jelphy 4 Окт 2018 в 15:54