Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从事件日志消息中提取一句话_Regex_Powershell_Event Log - Fatal编程技术网

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: &lt;Exception handlingInstanceId="7bdbceed-ef96-4f0d-985a-88f7c8641661"&gt;_x000D__x000A_  &lt;DateTime&gt;2018-08-03 11:57:53Z&lt;/DateTime&gt;_x000D__x000A_  &lt;Message&gt;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.&lt;/Message&gt;_x000D__x000A_  &lt;Source&gt;AFS&lt;/Source&gt;_x000D__x000A_  &lt;HelpLink /&gt;_x000D__x000A_  &lt;Property name="Parameters"&gt;_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: &lt;Exception handlingInstanceId="7bdbceed-ef96-4f0d-985a-88f7c8641661"&gt;_x000D__x000A_  &lt;DateTime&gt;2018-08-03 11:57:53Z&lt;/DateTime&gt;_x000D__x000A_  &lt;Message&gt;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.&lt;/Message&gt;_x000D__x000A_  &lt;Source&gt;AFS&lt;/Source&gt;_x000D__x000A_  &lt;HelpLink /&gt;_x000D__x000A_  &lt;Property name="Parameters"&gt;_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: &lt;Exception handlingInstanceId="7bdbceed-ef96-4f0d-985a-88f7c8641661"&gt;_x000D__x000A_  &lt;DateTime&gt;2018-08-03 11:57:53Z&lt;/DateTime&gt;_x000D__x000A_  &lt;Message&gt;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.&lt;/Message&gt;_x000D__x000A_  &lt;Source&gt;AFS&lt;/Source&gt;_x000D__x000A_  &lt;HelpLink /&gt;_x000D__x000A_  &lt;Property name="Parameters"&gt;_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: &lt;Exception handlingInstanceId="7bdbceed-ef96-4f0d-985a-88f7c8641661"&gt;_x000D__x000A_  &lt;DateTime&gt;2018-08-03 11:57:53Z&lt;/DateTime&gt;_x000D__x000A_  &lt;Message&gt;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.&lt;/Message&gt;_x000D__x000A_  &lt;Source&gt;AFS&lt;/Source&gt;_x000D__x000A_  &lt;HelpLink /&gt;_x000D__x000A_  &lt;Property name="Parameters"&gt;_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