我有一个这种格式的文本文件:
服务器名称: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
答案 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