Есть ли способ конвертировать таблицы текста в объект PowerShell - PullRequest
4 голосов
/ 21 апреля 2011

Есть много инструментов, которые выводят свои данные в виде таблицы. Одним из таких примеров является diskpart. Избавившись от посторонних выводов, вы получите что-то вроде этого.

Disk ###  Status         Size     Free     Dyn  Gpt
--------  -------------  -------  -------  ---  ---
Disk 0    Online          136 GB      0 B
Disk 1    Offline         136 GB   136 GB
Disk 2    Reserved       1027 MB      0 B        *
Disk 3    Reserved        500 GB      0 B        *
Disk 4    Reserved        500 GB      0 B        *
Disk 5    Reserved         10 GB      0 B        *
Disk 6    Reserved         13 GB      0 B        *
Disk 7    Reserved       4102 MB      0 B        *
Disk 8    Reserved       7169 MB      0 B        *
Disk 9    Reserved        503 GB      0 B        *
Disk 10   Reserved        506 GB      0 B        *
Disk 11   Reserved        500 GB      0 B        *
Disk 12   Reserved       3891 GB      0 B        *
Disk 13   Reserved        500 GB      0 B        *
Disk 14   Reserved       3891 GB      0 B        *
Disk 15   Reserved       1843 GB      0 B
Disk 16   Reserved       3072 GB      0 B        *
Disk 17   Reserved       2048 GB      0 B        *
Disk 18   Reserved        808 GB      0 B        *
Disk 19   Reserved        805 GB      0 B        *
Disk 20   Reserved       3891 GB      0 B        *
Disk 21   Reserved       3891 GB      0 B        *
Disk 22   Reserved       3891 GB      0 B        *
Disk 23   Reserved       6144 GB      0 B        *

Другим примером является netstat, который выглядит следующим образом:

 Proto  Local Address          Foreign Address        State
 TCP    0.0.0.0:80             7ANDYS:0               LISTENING
 TCP    0.0.0.0:135            7ANDYS:0               LISTENING
 TCP    0.0.0.0:443            7ANDYS:0               LISTENING
 TCP    0.0.0.0:445            7ANDYS:0               LISTENING
 TCP    0.0.0.0:1025           7ANDYS:0               LISTENING
 TCP    0.0.0.0:1026           7ANDYS:0               LISTENING
 TCP    0.0.0.0:1027           7ANDYS:0               LISTENING
 TCP    0.0.0.0:1028           7ANDYS:0               LISTENING
 TCP    0.0.0.0:1029           7ANDYS:0               LISTENING
 TCP    0.0.0.0:2048           7ANDYS:0               LISTENING

Я пытаюсь выяснить, существует ли достаточно повторяемый способ преобразования данных этого типа в объект, чтобы свойства объекта были заголовками в первой строке. Я знаю, что есть множество способов сделать это для вывода отдельных инструментов, использующих регулярные выражения, но я ищу больше стратегии, как решить эту проблему, а не одноразовое решение только для diskpart или netstat.

Я пытался выяснить, как использовать сценарий Ли Холмса в Poshcode под названием Convert-TextToObject , но не совсем знал, с чего начать.

Ответы [ 4 ]

1 голос
/ 21 апреля 2011
0 голосов
/ 02 июля 2019

Что-то для примера netstat:

get-content netstat.txt | select -skip 1 | 
ConvertFrom-String -propertynames blank,proto,local,foreign,state | 
select * -ExcludeProperty blank

proto local        foreign  state
----- -----        -------  -----
TCP   0.0.0.0:80   7ANDYS:0 LISTENING
TCP   0.0.0.0:135  7ANDYS:0 LISTENING
TCP   0.0.0.0:443  7ANDYS:0 LISTENING
0 голосов
/ 22 апреля 2011

Я сделал это вчера :).Вы можете использовать out-datatable для преобразования ваших данных в System.DataTable.Получите его по почтовому коду .

Более подробную информацию смотрите в моей недавней записи .

0 голосов
/ 21 апреля 2011

В стратегическом плане я бы попытался преобразовать ваш текстовый файл в правильный файл CSV (значения, разделенные запятой), а затем использовать Import-Csv.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...