2011-04-21 100 views
4

有许多工具可以以表格格式输出数据。一个这样的例子是diskpart。刮掉一些无关的输出,你会得到这样的东西。有没有办法将文本表格转换为PowerShell对象

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上使用Lee Holmes的剧本,名字叫做Convert-TextToObject,但不知道从哪里开始。

+0

首先是推广代码以处理项目列表。链接中的代码可用于生成每个对象(例如,每行运行一次,不包括标题)。然后它只是从标题行中提取'格式'。优化可以稍后进行。应该是一个有趣的小项目。 – 2011-04-21 18:27:44

回答

0

从战略角度来看,我会尝试将文本文件转换为正确的CSV(彗形分离值)文件,然后使用Import-Csv

0

我昨天做过这个:)。您可以使用out-datatable将您的数据转换为System.DataTable。获取它在poshcode

欲了解更多详情,请参阅我最近的entry

相关问题