2014-07-15 59 views
0

我正在尋找一種解析文本文件並將結果放入PowerShell中的數組的方法。解析文本文件並將內容放入數組Powershell

我知道select-string -path -pattern會得到所有匹配模式的字符串。但是如果我已經有了一個結構化的文本文件,可能是管道分隔的,每行都有新的條目。像這樣:

prodServ1a prodServ1b prodServ1c

C:\目錄\ serverFile.txt

我如何可以將每個服務器到一個數組在PowerShell中,我可以遍歷?

回答

1

你說'管道分隔,像這樣',但你的例子不是管道分隔。我會想象它是,那麼你需要使用Import-CSV commandlet。例如如果數據文件包含此:

prodServ1a|4|abc 
prodServ1b|5|def 
prodServ1c|6|ghi 

那麼這段代碼:

$data = Import-Csv -Path test.dat -Header "Product","Cost","SerialNo" -Delimiter "|" 

將導入和拆分它,並添加頁眉:

$data 

Product     Cost      SerialNo 
-------     ----      -------- 
prodServ1a     4       abc 
prodServ1b     5       def 
prodServ1c     6       ghi 

然後你可以使用

foreach ($item in $data) { 
    $item.SerialNo 
} 
+0

編輯:我錯過了重要的-Delimiter位,使它與管道角色一起工作!更新。 – TessellatingHeckler

+0

快速的問題,有沒有辦法從項目對象匿名獲取字符串?我試過$ item [n]和$ item.fieldn,而後者沒有'通過我一個例外它仍然沒有工作。我假設如果我將標題添加到導入命令,那是它所期望的? – SoftwareSavant

+0

@DmainEvent我不知道一個方法,並找不到一個快速查找。我建議你發佈一個新問題,其他人也可以看到它。 (但是作爲一個註釋,你必須在頭文件中使用頭文件,或者使用'Import-CSV -Header ...',否則它會把文件的第一行作爲頭文件名,你會錯過一排數據)。 – TessellatingHeckler

0

如果您的數據是平坦或非結構的ed,但有一個模式,例如用空格或逗號分隔,沒有回車或換行符,可以使用Split()方法。

PS>$data = "prodServ1a prodServ1b prodServ1c" 

PS>$data 
prodServ1a prodServ1b prodServ1c 

PS>$data.Split(" ") 
prodServ1a 
prodServ1b 
prodServ1c 

特別適合有人向您發送由逗號分隔的IP地址列表。

相關問題