У меня есть скрипт PowerShell, который запускается автоматически, когда наша служба мониторинга обнаруживает, что веб-сайт не работает.
Он должен остановить AppPool (используя Stop-WebAppPool -name $AppPool;
), подождать, пока он действительно остановится, а затем перезапустить его.
Иногда процесс фактически не останавливается, что проявляется в ошибке
Cannot Start Application Pool:
The service cannot accept control messages at this time.
(Exception from HRESULT: 0x80070425)"
при попытке запустить его снова.
Если для остановки требуется больше определенного количества секунд (я выберу это количество времени после нескольких временных остановок, чтобы посмотреть, сколько времени это обычно занимает), я хочу просто завершить процесс.
Я знаю, что могу получить список процессов, используемых работниками в AppPool, выполнив dir IIS:\AppPools\MyAppPool\WorkerProcesses\
,
Process ID State Handles Start Time
---------- ----- ------- ----------
7124 Running
но я не могу понять, как на самом деле захватить идентификатор процесса, чтобы я мог его убить.