【问题标题】:How to get event message using Powershell?如何使用 Powershell 获取事件消息?
【发布时间】:2016-04-05 04:07:46
【问题描述】:
$FilterXML = '<QueryList>
                <Query Id="0" Path="System">
                    <Select Path="System">*[System[Provider[@Name="Service Control Manager"] and (Level=2)]]</Select>
                </Query>
             </QueryList>'
$Errors = Get-WinEvent -FilterXml $FilterXML
$Errors = $Errors | ?{ $_.ToXml().Contains("SomeService") }

问题是对于每个对象,Message 属性都是空的。我可以使用 .ToXml() 方法获取一些信息,但我无法获得您可以在常规选项卡下的 Windows 事件查看器中看到的消息。

如果我使用 Get-EventLog cmdlet,则消息属性返回字符串 关于一些错误。

源“服务控制”中事件 ID“-1073734793”的描述 找不到经理。本地计算机可能没有 必要的注册表信息或消息 DLL 文件以显示 消息,或者您可能无权访问它们。以下 信息是事件的一部分:'SomeService', '2', '0', '3', 'Run 配置的恢复程序'

【问题讨论】:

    标签: powershell powershell-2.0 event-log


    【解决方案1】:

    尝试这样的事情,我相信这与您尝试的相同。

    get-winevent -FilterHashtable  @{LogName="System";ProviderName="Service Control Manager";Level=2} | ?{$_.message -match "someservice"}
    

    我想Get-WinEvent 能够阅读那些以“错误消息”形式出现的内容:

    我尝试了两个等效的命令。收到Git-WinEvent 的预期消息和Get-EvenLog 收到的“错误”消息:

    get-eventlog -LogName System | ?{$_.eventid -eq 10016} | select message
    

    get-winevent -LogName System  | ?{$_.id -eq 10016} | select message
    

    【讨论】:

    • 是的,我们说的是同一件事。问题是,对于某些服务,这有效,而对于其他服务则无效。
    • @Primoz - 你看到我更新的答案了吗?好像您没有权限查看某些消息,如:you may not have permission to access them.
    • 我会尽快检查。非常感谢您的努力。
    【解决方案2】:

    你能用 WMI 收到消息吗?

    Get-WmiObject Win32_NTLogEvent -Filter "Logfile='system' AND SourceName='Service Control Manager' AND Message LIKE '%SomeService%'" | select Message
    

    【讨论】:

      猜你喜欢
      • 2018-07-19
      • 1970-01-01
      • 2017-03-09
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 2014-10-02
      相关资源
      最近更新 更多