有许多工具以表格格式输出数据。一个这样的例子是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上使用Lee Holmes的脚本Convert-TextToObject,但不太确定从哪里开始。
答案 0 :(得分:1)
你见过这个: http://thepowershellguy.com/blogs/posh/archive/2007/03/24/hey-powershell-guy-how-can-i-parse-a-tab-delimited-file-and-then-save-that-as-a-comma-separated-values-file.aspx 这可能就是你要找的东西。
答案 1 :(得分:0)
从战略角度来看,我会尝试将您的文本文件转换为正确的CSV(逗号分隔值)文件,然后使用Import-Csv
。
答案 2 :(得分:0)
答案 3 :(得分:0)
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
答案 4 :(得分:0)
使用此ConvertFrom-SourceTable cmdlet:
$DiskPart | ConvertFrom-SourceTable -Literal | Format-Table
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 *
...
$NetStat | ConvertFrom-SourceTable -Literal | Format-Table
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
...
(这也意味着您也可以对上述显示结果进行完整的往返)