Для управления системными службами на локальных и удаленных системах используется команда контроллера служб (service controller command) SC.
ИСПОЛЬЗОВАНИЕ: sc <сервер> [команда] [имя_службы] <параметр1> <параметр2>...
Вот некоторые из команд:
Во всех командах можно указывать имя удаленного компьютера, со службами которого вы хотите работать. Для этого нужно указать UNC-имя (например, \\Roza) или IP-адрес (например, 192.168.1.1)
Команда:
sc query Spooler
Результат:
Имя_службы: Spooler Тип : 110 WIN32_OWN_PROCESS (interactive) Состояние : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) Код_выхода_Win32 : 0 (0x0) Код_выхода_службы : 0 (0x0) Контрольная_точка : 0x0 Ожидание : 0x0
Для вывода информации о всех службах в системе можно использовать команду:
sc query type=service state=all
Скрипт проверяет запущена ли служба по списку. Если служба остановлена - запускает.
@echo off echo Date-Time >> ServiceStart.log date /T >> ServiceStart.log time /T >> ServiceStart.log rem List of controlled services set list=ServiceUniversalBBT^ ServiceUpdateFirmwareBBT^ ServiceTCPLoger^ scm-server^ postgresql-9.5^ pgAgent^ MySQL^ FirebirdServerDefaultInstance (for %%a in (%list%) do ( echo Check: %%a CALL :StartService %%a )) goto :end rem Checks whether the service is running and starts it if it is stopped. :StartService echo Check: %1 >> ServiceStart.log for /F "tokens=4" %%i in ('sc query %1') DO if [%%i]==[STOPPED] ( sc query %1 >> ServiceStart.log sc start %1 >> ServiceStart.log ) exit /b :end
Для справки: