我正在寻找一种解析文本文件的方法,并将结果放入PowerShell中的数组中。
我知道select-string -path -pattern将获得与模式匹配的所有字符串。但是,如果我已经有一个结构化的文本文件,可能是管道分隔的,每行都有新的条目。像这样:
prodServ1a prodServ1b prodServ1c
C:\ DIR \ serverFile.txt
如何将每个服务器放入PowerShell的数组中,我可以循环使用?
答案 0 :(得分:4)
你说'管道分隔,像这样'但你的例子不是管道分隔的。我想象一下,那么你需要使用Import-CSV
命令行开关。例如如果数据文件包含:
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
}
答案 1 :(得分:1)
如果您的数据是平面或非结构化的,但有一个模式,例如用空格或逗号分隔,没有回车符或换行符,则可以使用Split()方法。
PS>$data = "prodServ1a prodServ1b prodServ1c"
PS>$data
prodServ1a prodServ1b prodServ1c
PS>$data.Split(" ")
prodServ1a
prodServ1b
prodServ1c
特别适合向您发送以逗号分隔的IP地址列表的人。