Я пытаюсь написать более надежный командлет Stop-Service (PSv3). В основном, имея функцию, которая вызывает Stop-Service, затем проверяет статус службы, чтобы увидеть, что служба действительно остановлена и, в конечном счете, перейдет в процесс, убивающий службу.Не отвечающий сервис для тестирования обработки обслуживания
Я пытаюсь написать или найти службу, которая не прекращается изящно, но имеет тенденцию задерживаться после получения уведомления о прекращении.
Мой 'плохой' сервис просто использует это:
protected override void OnStop()
{
TheEventLog.WriteEntry("StrongBad in OnStop");
Thread.Sleep(300000);
}
Но служба делает остановки в любой тайм-аут позволяет Stop-Service.
PS C:\WINDOWS\system32> Stop-Service -Name StrongBad
WARNING: Waiting for service 'Trogdor (StrongBad)' to stop...
WARNING: Waiting for service 'Trogdor (StrongBad)' to stop...
WARNING: Waiting for service 'Trogdor (StrongBad)' to stop...
WARNING: Waiting for service 'Trogdor (StrongBad)' to stop...
PS C:\WINDOWS\system32> Get-Service StrongBad
Status Name DisplayName
------ ---- -----------
Stopped StrongBad Trogdor
я действительно ожидал (и в этом случае требуется) командлет Stop-Service, чтобы вернуть сообщение о том, сервис не удалось остановить в отведенное время.
Кажется, я вижу, похож на ожидаемое поведение, когда услуга имеет зависимости:
PS C:\src\Enterprise\Enterprise\Systems\Scripts\Powershell\Includes> Stop-Service -Name nsi -Force
Stop-Service : Service 'Network Store Interface Service (nsi)' cannot be stopped due to the following error: Cannot stop LanmanWorkstation service on computer '.'.
At line:1 char:1
+ Stop-Service -Name nsi -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (System.ServiceProcess.ServiceController:ServiceController) [Stop-Service], ServiceCommandException
+ FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Commands.StopServiceCommand
Stop-Service : Collection was modified; enumeration operation may not execute.
At line:1 char:1
+ Stop-Service -Name nsi -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Stop-Service], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.StopServiceCommand
Вот родственный ответ: http://stackoverflow.com/questions/12534170/stop-service-cmdlet-timeout-possible – Arluin
я получил его, так что сервис Безразлично 't stop, и, как показывает ответ в комментарии выше, Stop-Service не ev тайм-аут, он будет продолжать писать: ПРЕДУПРЕЖДЕНИЕ: Ожидание обслуживания «Trogdor (StrongBad)», чтобы остановить ... – Arluin