Select-Object省略Select-String powershell的输出

时间:2017-07-12 04:58:59

标签: powershell powershell-v2.0

我编写了一个Powershell脚本,在日志文件中查找字符串(例如ERROR)并抓取这些行并将这些行输出到文件中,以便更简单地阅读等(我所在的行业非常大)日志文件),但我遇到了问题。之前,当代码的(相关)部分看起来像这样:

Select-String -Path "$file" -Pattern "$string" -CaseSensitive | Out-File -filepath $filepath

它将输出文件路径,行号,然后输出实际行,从而形成一个非常混乱的文件。好吧,我只需要行号和行号,所以我这样做了:

Select-String -Path "$file" -Pattern "$string" -CaseSensitive | Select-Object -Property LineNumber,Line | Out-File -filepath $filepath

哪个会返回如下所示的行:

978 2017-07-10 10:46:11,288 ERROR [Music...

这是行号,然后是行,行只有35个字符 在我将Select-String传递给Select-Object之前,脚本会输出整行,但现在使用Select-Object它会省略一些输出。我尝试向-verboseSelect-String添加Select-Object参数,但这没有做任何事情。

1 个答案:

答案 0 :(得分:3)

你可以试试这个:

Select-String -Path "test.xml" -Pattern "ERROR" -CaseSensitive | ft -Property LineNumber,Line -Wrap  | Out-File -FilePath c:\out.txt

您的问题的原因是屏幕缓冲区长度(increasing powershell screen buffer width),您也可以更改它,但上面的代码段更简单有效