Получить идентификатор процесса на основе 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
из вашей строки.