如何使用Powershell获取事件消息?

发布于 2024-12-01 09:30:05 字数 748 浏览 3 评论 0原文

$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 属性都是 null。我可以使用方法 .ToXml() 获取一些信息,但无法获取您可以在常规选项卡下的 Windows 事件查看器中看到的消息。

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

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

$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") }

Problem is that for every object, Message property is null. I can get some info using method .ToXml(), but I can't get message that you could see in windows event viewer under general tab.

If I use Get-EventLog cmdlet, the message property returns string
about some error.

The description for Event ID '-1073734793' in Source 'Service Control
Manager' cannot be found. The local computer may not have the
necessary registry information or mess age DLL files to display the
message, or you may not have permission to access them. The following
information is part of the event:'SomeService', '2', '0', '3', 'Run
the configured recovery program'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清醇 2024-12-08 09:30:05

尝试这样的事情,我相信这相当于你正在尝试的事情。

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

在此处输入图像描述

Try something like this, which I believe is equivalent to what you were trying.

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

I suppose Get-WinEvent is able to read those that come as "error message":

I tried two equivalent commands. Got the expected message with Git-WinEvent and the "error" message that you got with Get-EvenLog:

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

enter image description here

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

enter image description here

别低头,皇冠会掉 2024-12-08 09:30:05

你能用 WMI 获取消息吗?

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

Can you get the message with WMI?

Get-WmiObject Win32_NTLogEvent -Filter "Logfile='system' AND SourceName='Service Control Manager' AND Message LIKE '%SomeService%'" | select Message
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文