Измените Write-Host $result | Format-Table -AutoSize
на $result
. После того как вы выгрузили содержимое $result
на хост, вы больше не сможете передавать его в командлет Format-Table
. Использование Format-Table
не имеет смысла, поскольку вы получаете массив string
, в котором вам нужно разделить несколько столбцов, чтобы использовать его для Format-Table
.
Чтобы преобразовать данные строки в массив пользовательских объектов PowerShell, я придумал:
PS C:\> $result = iex '.\tshark.exe -r C:\temp\test.pcapng -T fields -e frame.number -e frame.time -e eth.src -e eth.dst -e ip.src -e ip.dst -e ip.proto -e _ws.col.Info -E header=y -E separator="," -E quote=d -E occurrence=f' | ConvertFrom-Csv
Теперь $result
- это массив объектов PowerShell. Если я дам дамп первого объекта массива:
PS C:\> $result | Select-Object -First 1
frame.number : 1
frame.time : May 14, 2019 06:59:40.011932000 W. Europe Daylight Time
eth.src : b0:fa:eb:1e:8f:a1
eth.dst : 00:50:56:a4:24:eb
ip.src : 172.22.21.50
ip.dst : 10.22.23.98
ip.proto : 17
_ws.col.Info : 58842  3389 Len=12
Вы видите, что объект имеет несколько свойств. Чтобы увидеть все доступные свойства объекта, мы можем использовать командлет Get-Member
:
PS C:\> $result[0] | Get-Member
TypeName: Selected.System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
eth.dst NoteProperty string eth.dst=00:50:56:a4:24:eb
eth.src NoteProperty string eth.src=b0:fa:eb:1e:8f:a1
frame.number NoteProperty string frame.number=1
frame.time NoteProperty string frame.time=May 14, 2019 06:59:40.011932000 W. Europe Daylight Time
ip.dst NoteProperty string ip.dst=10.22.23.98
ip.proto NoteProperty string ip.proto=17
ip.src NoteProperty string ip.src=172.22.21.50
_ws.col.Info NoteProperty string _ws.col.Info=58842  3389 Len=12
Выше вы видите несколько свойств, которые можно использовать для дальнейшей фильтрации, сортировки (например, $result | Sort-Object ip.dst
) или для выбора нескольких свойств с помощью командлета Format-Table
.
Пример: * * тысяча двадцать-пять
PS C:\> $result[0] | Format-Table -Property frame.number, ip.dst, ip.src
frame.number ip.dst ip.src
------------ ------ ------
1 10.22.23.98 172.22.21.50
Надеюсь, это поможет.