Regex 从事件日志消息中提取一句话
试图在一系列事件中仅读取消息的一小部分。难以获得好的输出 我的脚本(假设所有变量都已正确设置,我能够收集正确的事件,等等): 但是…如果在脚本中执行此操作(手动粘贴日志摘录): 然后我得到了一个好结果:Regex 从事件日志消息中提取一句话,regex,powershell,event-log,Regex,Powershell,Event Log,试图在一系列事件中仅读取消息的一小部分。难以获得好的输出 我的脚本(假设所有变量都已正确设置,我能够收集正确的事件,等等): 但是…如果在脚本中执行此操作(手动粘贴日志摘录): 然后我得到了一个好结果: EventTime : 7/30/2018 3:43:54 PM EventLog : CCS EventProvider : CCS Logging EventID : 100 EventMessage : Exception Message:No catego
EventTime : 7/30/2018 3:43:54 PM
EventLog : CCS
EventProvider : CCS Logging
EventID : 100
EventMessage : Exception Message:No category found for key = R-MD.
EventKey : R-MD
如果有帮助,$Event.Message.GetType()
&$Event.Message[0].GetType()
将产生以下结果:
True | True | String | System.Object
True | True | Char | System.ValueType
概括地说,我需要:
$Event.Message的
和
标记之间的任何内容
[Key]:
$Event.Message
中
我的实际日志中可能有多种不同的内容,特别是针对X个字符进行拆分等。这不是一个选项,到目前为止,我管理的是Reddit或互联网上的一些海报的帮助。我试过各种各样的正则表达式组合,但都没用,我似乎不知道如何使用正则表达式
我花了12个小时的大部分时间试图让他的输出正确…我不知所措
请帮忙
=====================
编辑:下面是每个请求导出的事件:
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
<Obj RefId="0">
<TN RefId="0">
<T>System.Diagnostics.Eventing.Reader.EventLogRecord</T>
<T>System.Diagnostics.Eventing.Reader.EventRecord</T>
<T>System.Object</T>
</TN>
<ToString>System.Diagnostics.Eventing.Reader.EventLogRecord</ToString>
<Props>
<I32 N="Id">100</I32>
<Nil N="Version" />
<I32 N="Qualifiers">0</I32>
<By N="Level">4</By>
<I32 N="Task">0</I32>
<Nil N="Opcode" />
<I64 N="Keywords">36028797018963968</I64>
<I64 N="RecordId">4824</I64>
<S N="ProviderName">CCS LOGGING</S>
<Nil N="ProviderId" />
<S N="LogName">CCS</S>
<Nil N="ProcessId" />
<Nil N="ThreadId" />
<S N="MachineName">Test</S>
<Nil N="UserId" />
<DT N="TimeCreated">2018-08-03T11:57:53-04:00</DT>
<Nil N="ActivityId" />
<Nil N="RelatedActivityId" />
<S N="ContainerLog">ccs</S>
<Obj N="MatchedQueryIds" RefId="1">
<TN RefId="1">
<T>System.UInt32[]</T>
<T>System.Array</T>
<T>System.Object</T>
</TN>
<LST />
</Obj>
<Obj N="Bookmark" RefId="2">
<TN RefId="2">
<T>System.Diagnostics.Eventing.Reader.EventBookmark</T>
<T>System.Object</T>
</TN>
<ToString>System.Diagnostics.Eventing.Reader.EventBookmark</ToString>
</Obj>
<S N="LevelDisplayName">Information</S>
<S N="OpcodeDisplayName">Info</S>
<Nil N="TaskDisplayName" />
<Obj N="KeywordsDisplayNames" RefId="3">
<TN RefId="3">
<T>System.Collections.ObjectModel.ReadOnlyCollection`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]</T>
<T>System.Object</T>
</TN>
<LST>
<S>Classic</S>
</LST>
</Obj>
<Obj N="Properties" RefId="4">
<TN RefId="4">
<T>System.Collections.Generic.List`1[[System.Diagnostics.Eventing.Reader.EventProperty, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]</T>
<T>System.Object</T>
</TN>
<LST>
<Obj RefId="5">
<TN RefId="5">
<T>System.Diagnostics.Eventing.Reader.EventProperty</T>
<T>System.Object</T>
</TN>
<ToString>System.Diagnostics.Eventing.Reader.EventProperty</ToString>
<Props>
<S N="Value">Timestamp: 8/3/2018 3:57:53 PM_x000D__x000A_Message: <Exception handlingInstanceId="7bdbceed-ef96-4f0d-985a-88f7c8641661">_x000D__x000A_ <DateTime>2018-08-03 11:57:53Z</DateTime>_x000D__x000A_ <Message>Exception Message Key:RDKEYNF_x000D__x000A_Exception Message:No record found in ApplicationLabels category for key = R-MD, Locale = 1033, Filter = Active, and EffectiveDate = 8/3/2018.</Message>_x000D__x000A_ <Source>AFS</Source>_x000D__x000A_ <HelpLink />_x000D__x000A_ <Property name="Parameters">_x000D__x000A_[CategoryName] : ApplicationLabels_x000D__x000A_[Key] : R-MD_x000D__x000A_[LocaleId] : 1033_x000D__x000A_</S>
</Props>
</Obj>
</LST>
</Obj>
</Props>
<MS>
<S N="Message">Timestamp: 8/3/2018 3:57:53 PM_x000D__x000A_Message: <Exception handlingInstanceId="7bdbceed-ef96-4f0d-985a-88f7c8641661">_x000D__x000A_ <DateTime>2018-08-03 11:57:53Z</DateTime>_x000D__x000A_ <Message>Exception Message Key:RDKEYNF_x000D__x000A_Exception Message:No record found in ApplicationLabels category for key = R-MD, Locale = 1033, Filter = Active, and EffectiveDate = 8/3/2018.</Message>_x000D__x000A_ <Source>AFS</Source>_x000D__x000A_ <HelpLink />_x000D__x000A_ <Property name="Parameters">_x000D__x000A_[CategoryName] : ApplicationLabels_x000D__x000A_[Key] : R-MD_x000D__x000A_[LocaleId] : 1033_x000D__x000A_</S>
</MS>
</Obj>
</Objs>
System.Diagnostics.Eventing.Reader.EventLogRecord
System.Diagnostics.Eventing.Reader.EventRecord
系统对象
System.Diagnostics.Eventing.Reader.EventLogRecord
100
0
4.
0
36028797018963968
4824
CCS测井
CCS
试验
2018-08-03T11:57:53-04:00
ccs
System.UInt32[]
系统数组
系统对象
System.Diagnostics.Eventing.Reader.EventBookmark
系统对象
System.Diagnostics.Eventing.Reader.EventBookmark
问询处
信息
System.Collections.ObjectModel.ReadOnlyCollection`1[[System.String,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]
系统对象
经典
System.Collections.Generic.List`1[[System.Diagnostics.Eventing.Reader.EventProperty,System.Core,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]
系统对象
System.Diagnostics.Eventing.Reader.EventProperty
系统对象
System.Diagnostics.Eventing.Reader.EventProperty
时间戳:2018年8月3日3:57:53 PM\u x000D\u x000A\u消息:异常处理InstanceId=“7bdbceed-ef96-4f0d-985a-88f7c8641661”\u x000D\u x000A\u日期时间2018-08-03 11:57:53Z/DateTime\u x000D\u x000A\u消息异常消息键:RDKEYNF\u x000D\u x000D\u x000A\u异常消息:在应用程序标签类别中找不到键为R-MD、区域设置为激活的记录,生效日期=2018年8月3日/Message\ux000d\ux000a\uuuSourceAFS/Source\ux000d\ux000a\uHelpLink/\ux000d\ux000a\ux000a\uProperty name=“Parameters”\ux000d\ux000a\uuuGoryName]:应用程序标签\ux000d\ux000a\u000a[关键字]:R-MD\ux000d\ux000d\ux000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a[LocaleId]:1033\ux000d\ux000a_
时间戳:2018年8月3日3:57:53 PM\u x000D\u x000A\u消息:异常处理InstanceId=“7bdbceed-ef96-4f0d-985a-88f7c8641661”\u x000D\u x000A\u日期时间2018-08-03 11:57:53Z/DateTime\u x000D\u x000A\u消息异常消息键:RDKEYNF\u x000D\u x000D\u x000A\u异常消息:在应用程序标签类别中找不到键为R-MD、区域设置为激活的记录,生效日期=2018年8月3日/Message\ux000d\ux000a\uuuSourceAFS/Source\ux000d\ux000a\uHelpLink/\ux000d\ux000a\ux000a\uProperty name=“Parameters”\ux000d\ux000a\uuuGoryName]:应用程序标签\ux000d\ux000a\u000a[关键字]:R-MD\ux000d\ux000d\ux000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a[LocaleId]:1033\ux000d\ux000a_
运行这个一行程序从$InStuff中获得了
之间的值:
[regex]::matches($InStuff,'<Message>(.*?)<\/Message>').value.Replace("<Message>","")
.Replace("</Message>","").Trim()
对于[Key]值:
[regex]::matches($InStuff,'(?<=\[Key\]).*').value.Replace(":","").Trim()
了解regex的一个好网站是:,它们解释了regex的每个部分在测试字符串上的作用。您能用
导出CliXml
导出测试事件并将其添加到您的问题中吗?这样人们就可以导入它并提供帮助。@TheIncorrigible1有没有办法稍微编辑一下?条目等中有一些客户数据(公司名称等)。这是我唯一的问题,否则我绝对会这样做。只要类型信息保持完整,您应该可以编辑生成的XML以对其进行清理。@TheIncorrigible1,我甚至在我的问题中添加了导出的测试。这就足够了,还是你更喜欢我用别的东西来分享?再次感谢。谢谢@Sohvax!消息似乎正在工作!然而,关键是要把剩下的信息(包括我消毒过的东西)带走。有没有办法让它停在[LocaleId]上?我基本上尝试过使用message one并更改为[Key]和[LocaleId],但我可能错过了其他几个regex组合…我本周末尝试使用该网站,但无法完全理解其原理或其他内容…好吧,我将其归结为显示我的密钥代码,但其中包括[LocaleId]最后,使用下面的正则表达式并使用该计算器。似乎无法让它在LocaleId的[
之前停止。(?经过更多的尝试,我想我得到了它…似乎正在工作。我使用了以下命令:EventKey=[regex]::matches($MessageContents,'(?@Ilya很抱歉这么晚才回复,很高兴看到你的回复正常!很高兴它起到了作用!实际上我仍然需要一些帮助。我想不是所有日志都有[Key]
后跟[LocaleId]
,有些日志没有LocaleId
,但有[Filter]
True | True | String | System.Object
True | True | Char | System.ValueType
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
<Obj RefId="0">
<TN RefId="0">
<T>System.Diagnostics.Eventing.Reader.EventLogRecord</T>
<T>System.Diagnostics.Eventing.Reader.EventRecord</T>
<T>System.Object</T>
</TN>
<ToString>System.Diagnostics.Eventing.Reader.EventLogRecord</ToString>
<Props>
<I32 N="Id">100</I32>
<Nil N="Version" />
<I32 N="Qualifiers">0</I32>
<By N="Level">4</By>
<I32 N="Task">0</I32>
<Nil N="Opcode" />
<I64 N="Keywords">36028797018963968</I64>
<I64 N="RecordId">4824</I64>
<S N="ProviderName">CCS LOGGING</S>
<Nil N="ProviderId" />
<S N="LogName">CCS</S>
<Nil N="ProcessId" />
<Nil N="ThreadId" />
<S N="MachineName">Test</S>
<Nil N="UserId" />
<DT N="TimeCreated">2018-08-03T11:57:53-04:00</DT>
<Nil N="ActivityId" />
<Nil N="RelatedActivityId" />
<S N="ContainerLog">ccs</S>
<Obj N="MatchedQueryIds" RefId="1">
<TN RefId="1">
<T>System.UInt32[]</T>
<T>System.Array</T>
<T>System.Object</T>
</TN>
<LST />
</Obj>
<Obj N="Bookmark" RefId="2">
<TN RefId="2">
<T>System.Diagnostics.Eventing.Reader.EventBookmark</T>
<T>System.Object</T>
</TN>
<ToString>System.Diagnostics.Eventing.Reader.EventBookmark</ToString>
</Obj>
<S N="LevelDisplayName">Information</S>
<S N="OpcodeDisplayName">Info</S>
<Nil N="TaskDisplayName" />
<Obj N="KeywordsDisplayNames" RefId="3">
<TN RefId="3">
<T>System.Collections.ObjectModel.ReadOnlyCollection`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]</T>
<T>System.Object</T>
</TN>
<LST>
<S>Classic</S>
</LST>
</Obj>
<Obj N="Properties" RefId="4">
<TN RefId="4">
<T>System.Collections.Generic.List`1[[System.Diagnostics.Eventing.Reader.EventProperty, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]</T>
<T>System.Object</T>
</TN>
<LST>
<Obj RefId="5">
<TN RefId="5">
<T>System.Diagnostics.Eventing.Reader.EventProperty</T>
<T>System.Object</T>
</TN>
<ToString>System.Diagnostics.Eventing.Reader.EventProperty</ToString>
<Props>
<S N="Value">Timestamp: 8/3/2018 3:57:53 PM_x000D__x000A_Message: <Exception handlingInstanceId="7bdbceed-ef96-4f0d-985a-88f7c8641661">_x000D__x000A_ <DateTime>2018-08-03 11:57:53Z</DateTime>_x000D__x000A_ <Message>Exception Message Key:RDKEYNF_x000D__x000A_Exception Message:No record found in ApplicationLabels category for key = R-MD, Locale = 1033, Filter = Active, and EffectiveDate = 8/3/2018.</Message>_x000D__x000A_ <Source>AFS</Source>_x000D__x000A_ <HelpLink />_x000D__x000A_ <Property name="Parameters">_x000D__x000A_[CategoryName] : ApplicationLabels_x000D__x000A_[Key] : R-MD_x000D__x000A_[LocaleId] : 1033_x000D__x000A_</S>
</Props>
</Obj>
</LST>
</Obj>
</Props>
<MS>
<S N="Message">Timestamp: 8/3/2018 3:57:53 PM_x000D__x000A_Message: <Exception handlingInstanceId="7bdbceed-ef96-4f0d-985a-88f7c8641661">_x000D__x000A_ <DateTime>2018-08-03 11:57:53Z</DateTime>_x000D__x000A_ <Message>Exception Message Key:RDKEYNF_x000D__x000A_Exception Message:No record found in ApplicationLabels category for key = R-MD, Locale = 1033, Filter = Active, and EffectiveDate = 8/3/2018.</Message>_x000D__x000A_ <Source>AFS</Source>_x000D__x000A_ <HelpLink />_x000D__x000A_ <Property name="Parameters">_x000D__x000A_[CategoryName] : ApplicationLabels_x000D__x000A_[Key] : R-MD_x000D__x000A_[LocaleId] : 1033_x000D__x000A_</S>
</MS>
</Obj>
</Objs>
[regex]::matches($InStuff,'<Message>(.*?)<\/Message>').value.Replace("<Message>","")
.Replace("</Message>","").Trim()
Exception Message:No category found for key = R-MD.
[regex]::matches($InStuff,'(?<=\[Key\]).*').value.Replace(":","").Trim()
R-MD