Для управления системными службами на локальных и удаленных системах используется команда контроллера служб (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
Для справки: