使用powershell读取文本文件

时间:2013-09-10 10:50:29

标签: powershell

我有一个这种格式的文本文件:

服务器名称:srvrX1
IP:
地点:NY
OS:

服务器名称:srvrX2
IP:
地点:NY
操作系统:Windows Server 2012
XYZ:

服务器名称:srvrX3
IP:
地点:STK
操作系统:Win2k3

服务器名称:srvrX4
IP:
地点:STK
OS:Win2k8

服务器名称:srvrX5
IP:
地点:STK
操作系统:RedHat Linux 5

服务器名称:srvrX6
IP:
地点:TKY
操作系统:Windows Server 2012

每个服务器的字段数可能不同,每个服务器信息之间的空行数是randm。我希望以表格格式输出。我是powershell的新手,有人可以帮忙。

非常感谢。 NEL

1 个答案:

答案 0 :(得分:6)

您可以在两个或多个换行符上拆分内容,然后再次拆分每个返回的元素,解析内容并为每个元素创建新对象:

$content = Get-Content .\test.txt | Out-String

$content -split '(?:\r\n){2,}' | Foreach-Object{

    $pso = New-Object PSObject

    $_ -split '(?:\r\n)' | Where-Object {$_} | ForEach-Object{

        $var = $_ -split ':'
        $pso | Add-Member -MemberType NoteProperty -Name $var[0].Trim() -Value $var[1].Trim()
    }

    $pso

} 


ServerName IP Location OS                 
---------- -- -------- --                 
srvrX1        NY                          
srvrX2        NY       Windows Server 2012
srvrX3        STK      Win2k3             
srvrX4        STK      Win2k8             
srvrX5        STK      RedHat Linux 5     
srvrX6        TKY      Windows Server 2012