[[:start|На главную]], [[:notes:notes|Заметки]]
----
====== Управление службами из командной строки ======
{{tag>Заметки Windows}}
Для управления системными службами на локальных и удаленных системах используется команда контроллера служб (service controller command) SC.
===== Команды SC - настройка, запуск и останов системный служб Windows =====
ИСПОЛЬЗОВАНИЕ:
sc <сервер> [команда] [имя_службы] <параметр1> <параметр2>...
Вот некоторые из команд:
* SC config — настройка учетных записей регистрации и запуска служб;
* SC query — вывод списка всех служб, настроенных на компьютере;
* SC qc отображение конфигурации определенной службы;
* SC start — запуск служб;
* SC stop — останов служб;
* SC pause — приостановка работы служб;
* SC continue — возобновление работы служб;
* SC failure — задание действий, выполняемых при сбое службы;
* SC qfailure — просмотр действий, выполняемых при сбое службы.
Во всех командах можно указывать имя удаленного компьютера, со службами которого вы хотите работать. Для этого нужно указать 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
Для справки:
* [[https://ss64.com/nt/for_f.html|FOR /F Loop command: against a set of files - conditionally perform a command against each item.]]
* [[https://ss64.com/nt/if.html|IF Conditionally perform a command.]]
* [[notes:cmdlistofvalues|CMD. Работа со списком значений]]
----
[[:start|На главную]], [[:notes:notes|Заметки]]
~~DISCUSSION~~