[[: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~~