6

因此,我正在尝试使用Write-EventLog. 我已经编译了一个 CategoryMessageFile .dll 并在注册表中注册了它。

我的脚本大部分都写入事件日志,但问题是事件不显示类别名称;它显示在 dll 中枚举的类别消息 ID。

新事件日志 -LogName 应用程序 -Source 'test1' -CategoryResourceFile 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\test.dll'

Write-EventLog -LogName Application -Source 'test1' -EntryType Information -EventId 1 -Message "$($DataSet.Tables[0].Rows[$i][6])" -Category 1

我知道映射是正确的,因为当我运行时

Get-EventLog -LogName 应用程序-最新 3 | 格式列表

对于我刚刚写入日志的事件,正确的类别名称显示在类别下。

这是我的 mc 文件的样子。

;// Header


;// Categories
MessageIdTypedef=WORD

MessageId=0x1
Language=English
ETLUncategorizedError
.

MessageId=0x2
Language=English
ETLThresholdExceeded
.

MessageId=0x3
Language=English
ETLMalformattedFile
.

MessageId=0x4
Language=English
ETLWebInvocationFailure
.

那么,如何在事件日志中显示名称而不是数字?

4

2 回答 2

0

尝试将机器Authenticated UsersUsers组添加到邮件文件夹的安全级别。保留默认权限。然后重新启动或尝试重新启动 EventLog 服务。

在管理员命令提示符下:net stop eventlog

您可能会被提示关闭其他服务。您必须输入Y才能继续。被关闭的服务通常会自行重启,因此您只需等待几秒钟。eventlog 服务可能无法关闭,因为另一个服务已重新启动,可能需要几次尝试才能使所有内容都关闭。密切关注生成的文本以了解状态。

于 2018-01-24T15:43:37.897 回答
0

您可能正在应用程序或系统日志事件中查找它,并且您运行的第一个命令创建了一个名为 TEST1 的日志。

描述 此 cmdlet 在本地或远程计算机上创建新的经典事件日志。它还可以注册写入新日志或现有日志的事件源。

于 2016-01-08T12:45:44.863 回答