Назад | Перейти на главную страницу

Может ли Logparser запрашивать новые типы файлов журнала в 2008 году

Я пытаюсь исследовать проблему и хотел бы использовать 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.

Вы на правильном пути, используя параметр / i: EVT с LogParser, но вы, очевидно, не читаете вывод - в нем четко сказано The process cannot access the file because it is being used by another process.

Вы не можете получить доступ к файлам журнала работающей машины - они заблокированы службой журнала событий. Если вам нужно запрашивать события с живых машин, рассмотрите возможность доступа к Снимок VSS где блокировка не будет проблемой или использование WQL-запросы к журналу событий вместо. Поскольку вы все равно используете PowerShell, используя System.Diagnostics.Eventlog класс тоже должен вас туда доставить.