У меня есть много файлов журнала, из которых я хочу извлечь отличное сообщение об ошибке для определенного устройства записи трассировки.
Файлами журнала является SharePoint журналы ULS.
Заголовки: Процесс Метки времени Категория области TID сообщение Уровня EventID Корреляция
Так, учитывая определенное имя процесса я хочу все отличные сообщения.
Если бы я должен был использовать SQL, то я записал бы что-то вроде этого:
выберите Отличное сообщение из где Процесс как 'myprocessname'
Я хотел бы сделать это с powershell через полный набор файлов журнала.
Я полагаю, что журнал ULS является вкладкой или разграниченным пространством.
Возможно, вас заинтересует Microsoft Log Parser , который, по сути, позволяет запускать SQL-подобные операторы в наборе файлов журналов. Вы также можете использовать это с Powershell. Вот несколько ссылок:
Предполагая, что файл журнала не слишком велик, вы можете прочитать его содержимое с помощью Import-Csv следующим образом:
$data = Import-Csv .\log.csv -Delimiter "`t"
Я предполагаю, что разделителем является табуляция, поскольку, вероятно, любое сообщение будет содержать пробелы. Когда у вас есть данные журнала, вы можете использовать стандартные операторы запросов PowerShell, например:
$data | Where {$_.Process -eq 'processname.exe'} | Select Message -Unique
Если файл журнала огромен (например, Import-Csv съедает слишком много памяти), я бы попытался использовать Log Parser или использовать регулярное выражение и анализируйте журнал по одной строке за раз.