我正在研究一个问题,想使用 Logparser 远程查询许多远程服务器中较新的 2008 日志类型之一。我想查询设置日志,而不是应用程序、系统、安全性。Logparser 似乎不了解这些新的日志类型,而且我无法找到不使用某些黑客手段来做到这一点的方法。
我看过一些关于其他黑客攻击的帖子,这些黑客攻击使之成为可能。因为我需要查询大约 100 台服务器,所以我找到的黑客攻击并不理想。在查询之前使用 Wevtutil 转换整个文件效率低下,并且不适用于远程对多台机器执行此操作。将注册表项添加到 HKLM\SYSTEM\CurrentControlSet\services\eventlog 很繁琐,因为每次您想要查询这些新日志类型中的一种时,您都需要新键。
使用 EVTX 文件的完整路径会将其视为文本,并且不会产生有用的输出。将输入指定为 EVT 会导致文件正在使用错误。查询是从 2008 R2 机器进行的,另一篇帖子说 Logparser 将支持 EVTX 文件。是否有可能在没有这些黑客的情况下远程使用 Logparser 来处理这些较新的日志?
PS C:\> .\LogParser.exe "SELECT * FROM \\NOBODY\admin$\System32\winevt\Logs\setup.evtx"
WARNING: Input format not specified - using TEXTLINE input format.
LogFilename Index Text
-------------------------------------------------- ----- -------
\\NOBODY\admin$\System32\winevt\Logs\Setup.evtx 1 ElfFile
\\NOBODY\admin$\System32\winevt\Logs\Setup.evtx 2 ♦A à
\\NOBODY\admin$\System32\winevt\Logs\Setup.evtx 3 ╫
Press a key...
Task aborted by user.
PS F:\apps\Logparser> .\LogParser.exe /i:evt "SELECT * FROM \\NOBODY\admin$\System32\winevt\Logs\setup.evtx"
Task aborted.
Cannot open <from-entity>: Error opening event log "\\?\UNC\SDCBOOP22\admin$\
System32\winevt\Logs\Setup.evtx": The process cannot access the file
because it is being used by another process.
PS C:\> .\LogParser.exe /i:evt "SELECT * FROM \\NOBODY\Setup"
Error: Error retrieving files: Error searching for files in folder \\NOBODY\Setup: The network na
me cannot be found.
PS C:\> .\LogParser.exe "SELECT * FROM \\NOBODY\Setup"
WARNING: Input format not specified - using TEXTLINE input format.
Task aborted.
Cannot open <from-entity>: Error opening files: Error searching for files in
folder \\NOBODY\Setup: The network name cannot be found.
答案1
使用 LogParser 的 /i:EVT 选项是正确的,但你显然没有读取输出 - 它清楚地表明The process cannot access the file because it is being used by another process.
您无法访问正在运行的计算机的日志文件 - 这些文件已被事件日志服务锁定。如果您需要查询来自实时计算机的事件,请考虑访问VSS 快照锁定不会成为问题,或者使用针对事件日志的 WQL 查询而是。由于您无论如何都在使用 PowerShell,因此使用系统.诊断.事件日志课程也应该能带你到达那里。