Получить идентификатор процесса на основе apppool после перезапуска

Наши apppools перерабатывают около 02:00 ночью. Я хочу создать processdump после перезапуска, но идентификатор процесса изменяется после перезапуска.

Как я могу получить идентификатор процесса переработанного пула приложений на основе идентификатора приложения (имя пользователя, запускающего процесс) или имени приложения?

Я пробовал бегать:

appcmd list wp

Это дало мне имена + идентификаторы. Как я могу отфильтровать этот результат, чтобы сохранить только идентификатор на основе определенного имени в переменной с помощью powershell?

Я думал о чем-то вроде:

$processId = appcmd list wp | Where-Object {$_.apppool -eq "MyApp_web"}

Заранее спасибо,

Тим

РЕДАКТИРОВАТЬ:

$ workerprocess = appcmd list wp /apppool.name:"MyApp_Web"

возвращает следующее: WP "6816" (applicationPool:MyApp_Web)

Теперь я просто хочу идентификатор этого процесса, а не все другие данные

РЕДАКТИРОВАТЬ 2: Благодаря Веспер

$WebWorker = список appcmd wp /apppool.name:"MyApp_Web"

if ($ WebWorker -match "\ d +") {$ WebId = $ соответствует [0] }

Написать-Host

1 ответ

Решение

В вашем случае все, что вам нужно сделать, это получить PID из строки. Поскольку PID представляет собой последовательность цифр, вы можете использовать регулярное выражение, чтобы получить соответствующий регион, например так:

if ($workerprocess -match "\d+") { $pid=$matches[0] }

Это вернется 6816 из вашей строки.

Другие вопросы по тегам