Эта статья рассказывает, как в командной строке Windows или в bat файле получить список служб Windows, узнать, установлена ли определённая служба, проверить состояние службы, перезапустить или остановить службу с помощью команд SC и NET.
Как считать список установленных служб Windows
Для получения списка служб используется команда:
sc query type= service
Она перечисляет службы, выводя для каждой следующую информацию:
Имя_службы: wuauserv Выводимое_имя: Центр обновления Windows Тип : 20 WIN32_SHARE_PROCESS Состояние : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, ACCEPTS_PRESHUTDOWN) Код_выхода_Win32 : 0 (0x0) Код_выхода_службы : 0 (0x0) Контрольная_точка : 0x0 Ожидание : 0x0
Важно, что язык вывода может быть разным (зависит от языковой версии Windows, региональных настроек), т.е. при написании командного файла необходимо учитывать, что вывод для той же службы может быть и таким:
SERVICE_NAME: wuauserv DISPLAY_NAME: Automatic Updates TYPE : 20 WIN32_SHARE_PROCESS STATE : 4 RUNNING (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
Как проверить, установлена ли определенная служба Windows
Проверить наличие определённой службы можно поиском, например:sc query type= service | findstr /i "wuauserv"
Если служба существует, вывод будет содержать строчку, а код возврата будет 0.
Если такой службы нет, вывод будет пустым, а код возврата 1.
sc query type= service | find /i "wuauserv"
или
sc query type= service | findstr /i "wuauserv"
Важно! В качестве строки поиска здесь используется внутреннее имя службы, которое не зависит от языковых настроек (DISPLAY_NAME зависит).
Как создать службу Windows
Команда SC CREATE создает службу, например:
sc create nhsms start= demand binPath= "%~dp0nhsmssvc.exe" DisplayName= "NHSMS service"
Как проверить состояние определенной службы
Для проверки конфигурации и статуса можно использовать команду SC QUERY
, команда работает с внутренними именами, поэтому для проверки службы Планировщик задач можно написать SC QUERY schedule
, и это будет работать везде. Проверить, запущена ли служба, можно по наличию строки RUNNING или STOPPED:
sc query schedule | find "RUNNING"
Команда NET START
перечисляет все запущенные службы по одной на строчку, что делает работу с ней простой, например, проверить, что служба запущена, можно командой NET START | find «Планировщик заданий». Но необходимо учитывать, что эта команда работает с пользовательскими именами (Display Name) служб и приведённая команда не сработает в англоязычных региональных настройках.
Как запустить или остановить службу Windows
Команды NET START и NET STOP соответственно запускают и останавливают службу по имени: Также команды SC START и SC STOP.
net start nhsms
net stop nhsms
sc start nhsms
sc stop nhsms