Эта статья рассказывает, как в командной строке 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
Как управлять службами Windows из командной строки
Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *