我正在尝试从许多文件中的多种模式之一开始查找行(日志分析)。有没有比以下更好的解决方案:
Get-ChildItem -Filter *DBLog.txt | ForEach-Object {
$name = $_.Name
Get-Content -Path $_.FullName |
Select-String -Pattern '^Msg*' |
Select-Object @{Name='File Name'; Expression={$name}}, LineNumber, Line
} |
Out-GridView
不幸的是,以上脚本仅搜索一种模式,并且使用Where-Object
我没有找到模式的行号。
看起来好像让我变得不必要的复杂;)
Select-String -Path *DBLog.txt -Pattern '^Msg|^Warn' |
Select-Object FileName, LineNumber, Line |
Out-GridView
但是我还有一个问题……您如何在此添加额外的一行?我要查找的内容(SQL Server错误)用2行写成:
消息208,级别16,状态1,服务器LOCALHOST,第9行无效的对象名称...
而Select-String
仅返回第一行