Идентификатор процесса запроса (PID) из журнала событий Windows - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь написать запрос, который извлечет идентификатор процесса (PID) из журнала событий Windows.

Я имею дело с идентификатором события Windows: 1309

Я написал несколько сценариев, которые приближают меня, но ни один не возвращает меня домой. Этот подошел ближе всего:

Get-EventLog -LogName Application -Source 'ASP.NET 4.0.30319.0' -EntryType Warning -Newest 1 |
    where eventid -eq 1309 |
    Select message |
    Format-List |
    Out-File c:\temp\elogdata.txt
Select-String c:\temp\elogdata.txt -Pattern "process id:" -SimpleMatch

Это вывод, который я получаю:

C:\temp\elogdata.txt:20:              Process ID: 7332

Мне нужно передать это «7332» из «идентификатора процесса:» в другую команду, такую ​​как TaskKill или ProcDump.

Как ни странно, когда я пытаюсь запустить Select-String на выходе в памяти, я ничего не получаю:

Get-EventLog -LogName Application -Source 'ASP.NET 4.0.30319.0' -EntryType Warning -Newest 1 |
    where eventid -eq 1309 |
    Select message |
    Format-List |
    Select-String -InputObject {$_} -Pattern "process id:"

Я также попробовал несколько Get-WinEvent скриптов ...

Get-WinEvent -FilterHashtable @{LogName='application';ID='1309'} -MaxEvents 1 |
    Format-List |
    select message

1 Ответ

0 голосов
/ 02 мая 2019

Никогда не используйте Format-* командлеты, если предполагается дальнейшая обработка ваших данных. Что вы хотите сделать, это развернуть свойство Message и настроить свой шаблон так, чтобы вы извлекали фактический PID вместо всей строки. Вы также не хотите использовать простое совпадение здесь.

... |
    Select-Object -Expand Message |
    Select-String -Pattern '(?<=process id:\s+)\d+' |
    Select-Object -Expand Matches |
    Select-Object -Expand Value

($<=...) - это так называемое положительное утверждение за кадром, которое позволяет вам сопоставить что-либо в вашей строке, не включая в возвращаемое совпадение. По сути, шаблон означает «соответствовать \d+, только если ему предшествует эта другая строка».

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