Цель: создать сценарий, который захватывает журналы событий за последний день с определенных компьютеров, а затем заглянуть в раздел сообщений для фильтрации данных на основе определенных IP-адресов (сначала), а затем снова фильтровать эти данные только для элементов, которые запускаются с определенным ключевым словом, а затем вывод в HTML.Фильтрация/Соответствие записей в журнале событий
Код:
$fileDate = (Get-Date -Format ddMMyyyy) + ".html"
$EventGrab = Invoke-Command {
Get-EventLog -LogName Security -After (Get-Date).AddDays(-1) -EntryType FailureAudit
} -ComputerName whatever
$EventGrab |
Sort-Object -Property TimeWritten -Descending |
Select-String -InputObject {$_.TimeWritten,$_.message} -Pattern "10.1.2.13" |
ConvertTo-Html |
Out-File C:\$fileDate
Грубые шаги:
- Создает файл с датой.
- Захват журналов событий из журнала безопасности с помощью FailureAudit за последние 24 часа.
- Проверьте раздел сообщения для вышеуказанного шаблона (устройств).
- Преобразование в HTML и выводит в файл с датой, начиная с шага 1.
Проблема находится между шагом 3 и 4; Мне нужно выяснить, чтобы отфильтровать сообщение еще раз после шага 3, который будет принимать поле сообщения и только смотреть в нем для конкретного синтаксиса (пример LTC), а затем выводить эти данные, если он нашел его в HTML-файле.
Я думаю, что это просто еще один Select-String
, или что-то, но не может понять это.
Пример входных данных (@Select-String
секции):
02/08/2017 15:51:57 Network Policy Server denied access to a user.
Contact the Network Policy Server administrator for more information.
User:
Security ID: S-1-0-0
Account Name: <scrubbed>
Account Domain: <scrubbed>
Fully Qualified Account Name: <scrubbed>
Client Machine:
Security ID: S-1-0-0
Account Name: -
Fully Qualified Account Name: -
OS-Version: -
Called Station Identifier: 00-1B-53-41-5A-57
Calling Station Identifier: F8-CA-B8-57-1A-9B
NAS:
NAS IPv4 Address: 10.1.2.13
NAS IPv6 Address: -
NAS Identifier: -
NAS Port-Type: Ethernet
NAS Port: 50324
RADIUS Client:
Client Friendly Name: <scrubbed>
Client IP Address: 10.1.2.13
Authentication Details:
Connection Request Policy Name: <scrubbed>
Network Policy Name: -
Authentication Provider: Windows
Authentication Server: <scrubbed>
Authentication Type: PEAP
EAP Type: Microsoft: Secured password (EAP-MSCHAP v2)
Account Session Identifier: -
Logging Results: Accounting information was written to the local log file.
Reason Code: 8
Reason: The specified user account does not exist.
Ожидаемые результаты:
Значение выше изменено таким образом, что только имя учетной записи является host/LTC<whatever>
.
Хм. Это, похоже, не функционировало должным образом (без вывода данных). Я думаю, что, возможно, я объяснил это неправильно, или я что-то упустил. В данных $ _. Message от EventGrab он отбросит кучу информации в этом поле «Сообщение», я ищу, чтобы соответствовать в этом огромном количестве данных либо 10.1.2.13, либо LTC, который выглядит прямо выше, но я 'Интересно, если он ищет только '10 .1.2.13' и/или 'LTC', являющийся строкой вместо того, чтобы просто быть частью строки в огромном сообщении. – elderusr07
Пожалуйста, отредактируйте свой вопрос и предоставите образец ввода и вывода. –
Добавлен некоторый ожидаемый вход/выход. – elderusr07