У меня есть сценарий 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
, но я не могу понять, как это сделать фактически захватить идентификатор процесса, чтобы я мог его убить.