XP 或 2003 中 Wevtutil 的对应程序是什么?

XP 或 2003 中 Wevtutil 的对应程序是什么?

我有一个用于将事件日志保存到共享驱动器的批处理文件。我想在 XP 和 Server 2003 上轻松完成此操作。由于 Wevtutil 仅适用于 Vista 及更高版本,我可以使用什么?

rem Script start here
rem Timestamp Generator

set BACKUP_PATH=\\shared-drive\it\Temp\Event-Logs\

rem Parse the date (e.g., Thu 02/28/2013)
set cur_yyyy=%date:~10,4%
set cur_mm=%date:~4,2%
set cur_dd=%date:~7,2%

rem Parse the time (e.g., 11:20:56.39)
set cur_hh=%time:~0,2%
if %cur_hh% lss 10 (set cur_hh=0%time:~1,1%)
set cur_nn=%time:~3,2%
set cur_ss=%time:~6,2%
set cur_ms=%time:~9,2%

rem Set the timestamp format
set timestamp=%cur_yyyy%%cur_mm%%cur_dd%-%cur_hh%%cur_nn%%cur_ss%%cur_ms%

rem Set the computername format
set servname=%computername%

wevtutil epl System %BACKUP_PATH%\%servname%_%timestamp%_system.evtx
wevtutil epl Application %BACKUP_PATH%\%servname%_%timestamp%_application.evtx
wevtutil epl Security %BACKUP_PATH%\%servname%_%timestamp%_security.evtx

rem End of Script

答案1

使用 Logevent.exe:

logevent "This is a test"
logevent -m \\server1 -s W -c 100 -r "my batch program" -e 88 "batch program failed!"

在 Windows 2003、XP 和 Win2K 中,您可以通过两种方式创建、管理和报告 ETW 会话:您可以使用 Microsoft 管理控制台 (MMC) 性能日志和警报管理单元,也可以使用命令行实用程序。在 Windows 2003 和 XP 中,操作系统包含命令行实用程序。在 Win2K 中,命令行实用程序是 Microsoft Windows 2000 Server 资源工具包的一部分,与 Windows 2003 和 XP 中的命令行实用程序略有不同。在 ETW 体系结构的上下文中,性能日志和警报管理单元和一些命令行实用程序是控制器应用程序。其他命令行实用程序提供消费者应用程序功能。

使用下列工具之一进行跟踪日志记录:

 logman 
 tracelog

参考

答案2

我不认为您要求的可以直接完成。我能想到的最接近的方法是使用 wmic 转储记录。这种方法在 Windows 7 中对我来说并不可靠,但在 Windows XP 下似乎有效。

示例片段:

    Rem The first time that WMIC runs, it may output "Please wait while WMIC is being installed." followed by the unicode answer.
    Rem cmd /a /c does not work correctly with a mix of single and double byte chars in the file.   So run first command twice (or ignore the problem).
    wmic os get lastbootuptime > %LogFileJunk%
    wmic os get lastbootuptime > %LogFileJunk%

    Rem Following call can be followed by SQL-like filters such as: GET * /format:csv OR GET TimeGenerated,User /format:csv
    wmic NTEVENT WHERE "LogFile='security' AND TimeGenerated > %Recent%" list /format:htable > %LogFileJunk% 2>nul
    dir %LogFileJunk% > NUL
    for %%c in (%LogFileJunk%) do if %%~zc GTR 2 GOTO GotLog1
    Echo !!!Unable to retrieve!!! >> %LogFileTmp%
    GOTO DoneLog1
    :GotLog1
    cmd /a /c type %LogFileJunk% >> %LogFileTmp%

请注意 wmic 的解决方法:

  • 运行两次,以防第一次出现有用的(ANSI)消息
  • 检查以确保创建了一个真实文件(> 2 个字符)
  • 就我而言,我需要从 unicode 转换为 ANSI(“type”命令)

相关内容