Как обрабатывать несколько шаблонов поиска с помощью Select-String в Powershell - PullRequest
2 голосов
/ 10 января 2012

Я анализирую файлы журнала ошибок на нескольких серверах и должен сообщать о проблемных ошибках. Файлы журнала ошибок должны содержать как минимум следующее (известные ошибки, которые исправны):

  • ОШИБКА Некоторый текст ошибки
  • ОШИБКА Еще один текст ошибки
  • ОШИБКА Вот еще текст ошибки

Что мне нужно, так это шаблон поиска Select-String, который включает в себя все три текстовые строки выше:

$Search_Str_1 = "ERROR Some error text"
$Search_Str_2 = "ERROR Some more error text"
$Search_Str_3 = "ERROR Here is more error text"

$ Search_Str_1, $ Search_Str_2 и $ Search_Str_3 - допустимые строки ошибок, о которых не следует сообщать, если они обнаружены в журналах ошибок. Однако если обнаружена какая-либо дополнительная строка ошибки, которая не соответствует ни одной из приведенных выше строк поиска, то она должна быть сообщена как ошибочная.

Пример:

  • ОШИБКА Некоторый текст ошибки
  • ОШИБКА Еще один текст ошибки
  • ОШИБКА Вот еще текст ошибки
  • ОШИБКА Это неверный текст ошибки, о котором следует сообщить

Четвертая строка ошибки (и любая другая строка, которая не соответствует search_str 1, 2 или 3) должна указываться как плохая.

Гипотетический код:

$ErrorLog = Get-ChildItem -Path $LOG_PATH -Include Error.log -Recurse | Select-String -notmatch ($Search_Str_1 -or $Search_Str_2 -or $Search_Str_3)

Как бы я это сделал?

1 Ответ

6 голосов
/ 10 января 2012

select-string -pattern принимает массив.Поместите эту строку поиска в массив и передайте ее в строку выбора.Добавьте флаг -NotMatch, если хотите, чтобы он не соответствовал шаблонам, которые вы передали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...