Powershell脚本用于提取记录的错误

时间:2010-07-18 05:43:11

标签: powershell

我有很多日志文件,我希望从特定的跟踪编写器中提取不同的错误消息。

日志文件是SharePoint ULS日志。

标题是: 时间戳 处理 TID 区域 类别 事件ID 水平 信息 相关性

所以给定一个特定的进程名称,我想要所有不同的消息。

如果我要使用SQL,我会写这样的东西:

从像'myprocessname'

这样的过程中选择Distinct Message

我想在整套日志文件中使用powershell执行此操作。

我认为ULS日志是制表符或空格分隔的。

2 个答案:

答案 0 :(得分:2)

您可能对Microsoft的Log Parser感兴趣,它本质上允许您跨一组日志文件运行SQL语句。您也可以将它与Powershell一起使用。以下是一些链接:

答案 1 :(得分:0)

假设日志文件不是太大,您可以使用Import-Csv读取内容,如下所示:

$data = Import-Csv .\log.csv -Delimiter "`t"

我假设分隔符是制表符,因为任何消息都可能包含空格。获得日志数据后,您可以使用标准的PowerShell查询运算符,如下所示:

$data | Where {$_.Process -eq 'processname.exe'} | Select Message -Unique

如果日志文件很大(导致Import-Csv占用太多​​内存),那么我会尝试使用Log Parser或使用正则表达式并解析日志,一次一行。