none
powershell 如何查看应用程序和服务日志 目录下的内容 RRS feed

  • 问题

  • 想通过 powershell 筛选 指定目录下的日志文件,在使用get-eventlog -list 没有找到适用的LOG 类型

    日志位置,具体信息如下:

    Microsoft-Windows-TerminalServices-LocalSessionManager/Operationa

    - <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    - <System>
      <Provider Name="Microsoft-Windows-TerminalServices-LocalSessionManager" Guid="{5D896912-022D-40AA-A3A8-4FA5515C76D7}" /> 
      <EventID>42</EventID> 
      <Version>0</Version> 
      <Level>4</Level> 
      <Task>0</Task> 
      <Opcode>0</Opcode> 
      <Keywords>0x1000000000000000</Keywords> 
      <TimeCreated SystemTime="2021-01-06T09:04:50.986837400Z" /> 
      <EventRecordID>1573</EventRecordID> 
      <Correlation ActivityID="{F420C56E-C2E7-4C42-B0CC-E73743BB0000}" /> 
      <Execution ProcessID="812" ThreadID="5528" /> 
      <Channel>Microsoft-Windows-TerminalServices-LocalSessionManager/Operational</Channel> 
      <Computer>testdc01.ittest.com</Computer> 
      <Security UserID="S-1-5-18" /> 

    已经找到了方法,但是message 中的参数如何筛选,例如用户和源地址信息


    TimeCreated  : 2021/1/6 18:36:12
    ProviderName : Microsoft-Windows-TerminalServices-LocalSessionManager
    Id           : 25
    Message      : 远程桌面服务: 会话重新连接成功:

                   用户: ITTEST\exadmin
                   会话 ID: 2
                   源网络地址: 10.150.1.57



    2021年1月6日 9:45

答案

  • 您好,

    由于Get-Eventlog只支持传统的日志类型,您可以使用Get-WinEvent来获取日志。

    Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational"


    由于日志的Message属性中只是一个字符串,可以使用正则表达式来过滤需要的内容,比如要获取用户

    if($log.Message -match "(?<=\b用户: ).+"){$Matches.Values}

    如您还有其他疑问,请随时与我们联系。 如果回答是有帮助的, 请将其标记为答案, 可以帮助其他有相同问题的社区成员, 并快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.


    • 已编辑 Ian Xue 2021年1月7日 3:12
    • 已标记为答案 Caesar_CL 2021年1月8日 8:46
    2021年1月7日 3:10

全部回复

  • 您好,

    由于Get-Eventlog只支持传统的日志类型,您可以使用Get-WinEvent来获取日志。

    Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational"


    由于日志的Message属性中只是一个字符串,可以使用正则表达式来过滤需要的内容,比如要获取用户

    if($log.Message -match "(?<=\b用户: ).+"){$Matches.Values}

    如您还有其他疑问,请随时与我们联系。 如果回答是有帮助的, 请将其标记为答案, 可以帮助其他有相同问题的社区成员, 并快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.


    • 已编辑 Ian Xue 2021年1月7日 3:12
    • 已标记为答案 Caesar_CL 2021年1月8日 8:46
    2021年1月7日 3:10
  • 您好:

    请问上述回复是否能够解决您的问题?

    如您还有其他疑问,请随时与我们联系。 如果回答是有帮助的, 请将其标记为答案, 可以帮助其他有相同问题的社区成员, 并快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2021年1月8日 3:31