2010-07-18 68 views
1

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

日志文件是SharePoint ULS日志。

的标题是: 时间戳 过程 TID 区 类别 事件ID 级别 消息 相关

所以给我希望所有的不同消息的具体进程名。

如果我是使用SQL我会写这样的事:

选择从那里过程就像“myprocessname”截然不同的消息

我想跨越了一整套日志使用PowerShell来做到这一点文件。

我相信ULS日志是制表符或空格分隔的。

回答

0

假设日志文件是不是太庞大,你可以阅读使用进口-CSV像这样的内容:

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

我假设分隔符是选项卡,因为它我有可能任何消息都会包含空格。一旦你的日志数据,您可以使用PowerShell的标准查询操作符,像这样:

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

如果日志文件是巨大的(这样导入-CSV吃了太多的内存),那么我要么尝试使用日志分析器或者使用正则表达式并一次解析一条日志。

+0

此方法适用于多个文件,我可以将它们合并到这个吗? – 2010-07-18 06:08:36

+0

当然,只需将文件指定为Import-Csv例如'Import-Csv file1.csv,file2.csv,c:\ temp \ file3.csv ...'。 – 2010-07-18 07:36:21