我正在使用 powershell cmdlet 创建新的事件日志、注册源并记录事件。我遇到了一些意外行为。我通过发出以下命令创建了一个具有任意名称的新日志:
New-EventLog -LogName SchedulerWakeUpTask -Source devops
我已在事件查看器中验证它已出现在“应用程序和服务日志”目录中。然后我创建了一个事件
Write-EventLog -LogName SchedulerWakeUpTask -Source devops -EventId 1000 -Message "All good."
但事件没有记录在正确的日志中,而是记录在应用程序日志中。它类似于这个问题。在日志属性中,我已验证我的自定义日志已分配了具有路径的特定单独日志文件%SystemRoot%\System32\Winevt\Logs\SchedulerWakeUpTask.evtx
。检查后,我通过发出命令删除了日志
Remove-EventLog -LogName SchedulerWakeUpTask
此后,空日志从事件查看器中消失,但整个应用程序日志也被清除干净。为什么?
看到已经出现的破坏,我决定再测试一下。测试结果如下:
- 源名称不重要
- 每次我再次创建并删除具有此特定名称的自定义日志时,应用程序事件日志都会被清除
- 如果此自定义日志不存在,则当我尝试删除它时,应用程序事件日志不会被清除
- 当我创建另一个自定义事件日志并随意命名为 SchedulerWakeUpTask2、SchedulerWakeUpTas、SchedulerWakes、kapusta 或其他名称时,应用程序事件日志不会被清除;
- 当我仅删除与自定义日志关联的源时,应用程序事件日志不会被清除
- 当再次创建自定义日志并发出事件时,该事件再次仅在事件日志
Write-EventLog
中可见Application
- 这不是事件查看器的视觉故障,
Get-EventLog -LogName Application
它显示No match
指定的事件文件已被截断(如果我没记错的话,它曾经超过 100MB,但现在它的大小只有 70kB)