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

用于提取记录的错误的Powershell脚本,powershell,Powershell,我有很多日志文件,希望从中提取特定跟踪编写器的不同错误消息 日志文件是SharePoint ULS日志 标题如下: 时间戳 过程 工业贸易署 地区 类别 事件 水平仪 消息 相关性 因此,给定一个特定的进程名,我需要所有不同的消息 如果我使用SQL,我会这样写: 选择进程所在位置的不同消息,如“myprocessname” 我希望使用powershell跨一整套日志文件执行此操作 我相信ULS日志是以制表符或空格分隔的。您可能会对Microsoft的感兴趣,它本质上允许您在一组日志文件中运行类似

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

日志文件是SharePoint ULS日志

标题如下: 时间戳 过程 工业贸易署 地区 类别 事件 水平仪 消息 相关性

因此,给定一个特定的进程名,我需要所有不同的消息

如果我使用SQL,我会这样写:

选择进程所在位置的不同消息,如“myprocessname”

我希望使用powershell跨一整套日志文件执行此操作


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

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


假设日志文件不是太大,您可以使用导入Csv读取其中的内容,如下所示:

$data = Import-Csv .\log.csv -Delimiter "`t"
我假设分隔符是tab,因为任何消息都可能包含空格。获得日志数据后,可以使用标准PowerShell查询运算符,如下所示:

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

如果日志文件很大(导入Csv会占用太多内存),那么我会尝试使用日志解析器,或者使用正则表达式一次解析一行日志。

这种方法适用于多个文件吗,我可以将它们合并到这个文件中吗?当然,只需指定要导入Csv的文件,例如
导入Csv文件1.Csv,文件2.Csv,c:\temp\file3.csv…