Select-对象省略 Select-String powershell 的输出

Select-Object omitting output from Select-String powershell

我写了一个 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

return 行看起来像这样:

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

先行号再行,一行总共只有35个字符。
在我将 Select-String 传送到 Select-Object 之前,脚本将输出整行,但现在使用 Select-Object 它会省略一些输出。我尝试将 -verbose 参数添加到 Select-StringSelect-Object,但没有任何效果。

你能试试这个吗:

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

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