2011-04-21 98 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

相關問題