Служба, не показывающая, может корректно завершить работу - PullRequest
0 голосов
/ 08 мая 2018

У меня проблема с тем, что служба неправильно отображает статус «может завершить работу». Простой пример кода:

for ($counter = 0; $counter -le 5; $counter++) {
    if ((Get-Service -Name BITS).CanShutDown) {
        Write-Output "BITS can shutdown.."    
        break
    }

    else {
        Write-Output "Waiting for service shutdown status.. $counter"
        Start-Sleep -Seconds 30
    }
}

Это выводит:

Waiting for service shutdown status.. 0
Waiting for service shutdown status.. 1
Waiting for service shutdown status.. 2
Waiting for service shutdown status.. 3
Waiting for service shutdown status.. 4
Waiting for service shutdown status.. 5

Если я открою консоль и использую Start-Service -Name BITS во время работы скрипта, цикл не заканчивается.

Почему CanShutDown всегда возвращает False? Даже если BITS остановлен или работает.

1 Ответ

0 голосов
/ 08 мая 2018

Проблема вызвана тем, что CanShutDown не совсем то, что вы ожидаете.

Как согласно документации ,

ServiceController.CanShutdown

Получает значение, указывающее, является ли служба должна быть уведомлена, когда система выключается.

Битам не нужно сообщать, что должно произойти отключение системы. Другие сервисы, как, скажем, сервер Sql делают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...