有许多工具可以以表格格式输出数据。一个这样的例子是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,但不知道从哪里开始。
首先是推广代码以处理项目列表。链接中的代码可用于生成每个对象(例如,每行运行一次,不包括标题)。然后它只是从标题行中提取'格式'。优化可以稍后进行。应该是一个有趣的小项目。 – 2011-04-21 18:27:44