Как получить рабочий процесс IIS AppPool ID

У меня есть сценарий PowerShell, который запускается автоматически, когда наша служба мониторинга обнаруживает, что веб-сайт не работает. Предполагается, что пул приложений остановится (с помощью 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

, но я не могу понять, как это сделать фактически захватить идентификатор процесса, чтобы я мог его убить.

23
задан yakatz 10 August 2011 в 16:42
поделиться