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