1

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

服务器名称:srvrX1
IP:
位置:纽约
操作系统:

服务器名称:srvrX2
IP:
位置:纽约
操作系统:Windows Server 2012
XYZ:

服务器名称:srvrX3
IP:
位置:STK
操作系统:Win2k3

服务器名称:srvrX4
IP:
位置:STK
操作系统:Win2k8

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

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

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

非常感谢。内尔

4

1 回答 1

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
于 2013-09-10T12:41:27.703 回答