11 лет, 7 месяцев назад
137 тысяч раз
Как перезапустить службу Windows с помощью файла .bat?
Я на сервере Windows.

21 золотой значок
84 серебряных знака
127 бронзовых знаков
спросил 22 дек. 2011 в 17:22
20 золотых значков
85 серебряных значков
139 бронзовых знаков
- Блог переполнения
- Рекомендуемые на мета
Похожие
Горячие вопросы о сети
больше горячих вопросов
Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой использования файлов cookie .
.
Службы в Windows можно запустить с помощью инструмента Service Manager.
Чтобы запустить графический интерфейс Service Manager, нажмите ⊞ Win
клавиша, чтобы открыть меню «Пуск», введите services
для поиска Service Manager и нажмите Enter
запустить его.
Службы также можно запустить с помощью командной строки (CMD) или PowerShell.
В этой заметке я показываю, как запускать, останавливать или проверять состояние службы в Windows с помощью командной строки (CMD) или PowerShell.
Запуск службы с помощью командной строки (CMD)
Начать службу:
C:\> net start serviceName
Получить сервисный статус:
C:\> sc запрос serviceName
Остановить службу:
C:\> net stop serviceName
Запустить службу:
PS C:\> Start-Service serviceName
Получить сервисный статус:
PS C:\> Get-Service serviceName
Остановить службу:
PS C:\> Stop-Service serviceName
15 августа 2010 г.
Обычно мы используем Services.msc
запускать, останавливать, отключать или включать любую службу. Мы можем сделать то же самое из командной строки Windows, также используя и утилиты. Ниже приведены команды для управления работой службы.
Команда остановить службу:
имя службы остановки сети
Чтобы начать службу:
имя службы запуска сети
C:\>net start webclient Произошла системная ошибка 5. В доступе отказано. С:\>
Чтобы отключить услугу:
sc config servicename start= отключено
Чтобы включить услугу:
sc config имя_службы start= требование
Чтобы служба запускалась автоматически при загрузке системы:
sc config servicename start= auto
Примечание. Пробел обязателен после «=» в приведенных выше командах sc.
C:\>sc config запуск веб-клиента = авто [SC] ОШИБКА OpenService 5: В доступе отказано.
Обратите внимание, что имя службы не является отображаемым именем службы. Каждому сервису присваивается уникальное идентификационное имя, которое можно использовать с net
или сбн
команды. Например, Удаленный вызов процедуры (RPC)
отображаемое имя службы. Но имя службы, которое нам нужно использовать в приведенных выше командах, — RpcSs
.
Таким образом, для запуска службы удаленного вызова процедур используется следующая команда:
net start RpcSsTo Stop Служба удаленного вызова процедур
чистый стоп RpcSs
Эти названия сервисов перечислены ниже для каждого сервиса. Первый столбец показывает отображаемое имя службы, а второй столбец показывает имя службы, которое следует использовать в net start
или чистый стоп
или sc конфиг
команды.
Иногда во время отладки мне нужно перезапустить службу на удаленной машине. В настоящее время я делаю это через удаленный рабочий стол. Как это можно сделать из командной строки на моей локальной машине?
спросил 9 окт 2008 в 15:32
Джош Кодрофф
27 золотых значков
95 серебряных значков
148 бронзовых знаков
Вы можете использовать консоль служб, щелкнув слева, а затем выбрав опцию «Подключиться к другому компьютеру» в меню «Действие».
Если вы хотите использовать только командную строку, вы можете использовать
sc \\machine stop <service> ответил 9 окт 2008 в 15:36

Винко Врсалович
53 золотых знака
334 серебряных знака
373 бронзовых знака
Вы можете использовать mmc:
- Старт/Выполнить. Введите «ммк».
- Файл / Добавить/удалить оснастку. Нажмите «Добавить».
- Найдите «Услуги» и нажмите «Добавить»
- Выберите «Другой компьютер:» и введите имя хоста/IP-адрес удаленного компьютера. Нажмите «Готово», «Закрыть» и т. д.
После этого вы сможете управлять службами, как если бы они находились на вашей локальной машине.
ответил 9 окт 2008 в 15:39
Райан Даффилд
6 золотых значков
39 серебряных значков
40 бронзовых знаков
Вы можете использовать Внутреннее устройство системы
PSEXEC
команда для удаленного выполнения net stop yourservice
, затем net start yourservice
ответил 9 окт 2008 в 15:39
Используя командную строку, вы можете сделать это:
AT \\computername time "NET STOP servicename"
AT \\computername time "NET START servicename" ответил 9 окт 2008 в 15:52
Эндрю Мур
30 золотых значков
163 серебряных значка
175 бронзовых знаков
Советую посмотреть RSHD
Вам не нужно заморачиваться с клиентом, он есть в Windows по умолчанию.
ответил 9 окт 2008 в 15:39

Что ж, если у вас есть Visual Studio (я знаю, что это 2005 год, но не уверен насчет более ранних версий), вы можете добавить удаленную машину в свой тег “Server Explorer”. В этот момент у вас будет доступ к СЛУЖБАМ, которые запущены или могут быть запущены с этой машины (а также к журналам событий, очередям и паре других интересных вещей).
ответил 9 окт 2008 в 15:37
Стивен Райтон
6 золотых значков
67 серебряных значков
86 бронзовых знаков
Один из способов — включить telnet-сервер на машине, на которой вы хотите управлять службами (добавлять/удалять компоненты Windows)
Открыть подсказку DOS
Введите telnet yourmachineip/name
Войти
введите net start &serviceName* например. w3svc
Это запустит IIS, или вы можете использовать net stop для остановки службы.
В зависимости от ваших настроек вам нужно подумать о способе защиты telnet-соединения, поскольку я думаю, что оно не зашифровано.
ответил 9 окт 2008 в 15:37
3 золотых значка
29 серебряных значков
32 бронзовых знака
Здесь есть несколько хороших решений. Если вы все еще используете Win2K и не можете ничего установить на удаленный компьютер, это также работает:
Щелкните правой кнопкой мыши имя своего компьютера и выберите «Подключиться к удаленному компьютеру»
ответил 9 окт 2008 в 18:32
Как написать скрипт для bat или cmd, чтобы надежно останавливать и запускать службу с проверкой ошибок (или сообщать мне, что по какой-то причине это не удалось)?
60 золотых значков
185 серебряных значков
222 бронзовых знака
спросил 25 сен 2008 в 15:09
Используйте SC
(управление услугами), она дает вам гораздо больше возможностей, чем просто start
& stop
.
ОПИСАНИЕ: SC — это программа командной строки, используемая для связи с Контроллер служб NT и службы. ИСПОЛЬЗОВАНИЕ: sc [команда] [имя службы]. Параметр имеет вид "\\ServerName" Дополнительную справку по командам можно получить, набрав: «sc [команда]» Команды: query----------- Запрашивает статус службы или перечисляет статус типов услуг. queryex--------- Запрашивает расширенный статус службы или перечисляет статус типов услуг. start----------- Запускает службу. pause-----------Отправляет службе запрос управления PAUSE. опросить-----Отправляет сервисному запросу управляющий запрос INTERROGATE. continue--------Отправляет службе запрос управления CONTINUE. stop------------Отправляет сервису STOP-запрос. config ---------- Изменяет конфигурацию службы (постоянно). description----- Изменяет описание службы. сбой --------- Изменяет действия, предпринимаемые службой в случае сбоя. qc-------------- Запрашивает информацию о конфигурации службы. qdescription ---- Запрашивает описание службы. qfailure-------- Запрашивает действия, предпринятые службой в случае сбоя. delete----------Удаляет службу (из реестра). create---------- Создает службу. (добавляет в реестр). control---------Отправляет элемент управления службе. sdshow---------- Отображает дескриптор безопасности службы. sdset----------- Устанавливает дескриптор безопасности службы. GetDisplayName — получает DisplayName для службы. GetKeyName ------ Получает ServiceKeyName для службы. EnumDepend ------ Перечисляет зависимости службы. Следующие команды не требуют имени службы: sc boot------------(ok | bad) Указывает, должна ли последняя загрузка быть сохранена как последняя удачная загрузочная конфигурация Блокировка ------------ Блокирует базу данных службы QueryLock ------- Запрашивает LockStatus для базы данных SCManager ПРИМЕР: sc запустить MyService
ответил 25 сен 2008 в 15:15
38 золотых значков
225 серебряных значков
299 бронзовых знаков
net start [serviceName] net stop [serviceName] довольно ясно говорят вам, преуспели они или потерпели неудачу. Например
U:\>net stop alerter
The Alerter service is not started.
More help is available by typing NET HELPMSG 3521. При запуске из пакетного файла у вас есть доступ к ERRORLEVEL кода возврата. 0 указывает на успех. Все, что выше, указывает на неудачу.
В виде bat-файла, error.bat
:
@echo off
net stop alerter
if ERRORLEVEL 1 goto error
exit
:error
echo There was a problem
pause Результат выглядит следующим образом:
U:\>error.bat
The Alerter service is not started.
More help is available by typing NET HELPMSG 3521.
There was a problem
Press any key to continue . . . - 0 = Success - 1 = Not Supported - 2 = Access Denied - 3 = Dependent Services Running - 4 = Invalid Service Control - 5 = Service Cannot Accept Control - 6 = Service Not Active - 7 = Service Request Timeout - 8 = Unknown Failure - 9 = Path Not Found - 10 = Service Already Running - 11 = Service Database Locked - 12 = Service Dependency Deleted - 13 = Service Dependency Failure - 14 = Service Disabled - 15 = Service Logon Failure - 16 = Service Marked For Deletion - 17 = Service No Thread - 18 = Status Circular Dependency - 19 = Status Duplicate Name - 20 = Status Invalid Name - 21 = Status Invalid Parameter - 22 = Status Invalid Service Account - 23 = Status Service Exists - 24 = Service Already Paused Команда NET не возвращает задокументированные коды возврата класса Win32_Service (Service Not Active, Service Request Timeout и т. д.) и для многих ошибок просто возвращает Errorlevel 2.
Посмотрите здесь: http://ss64.com/nt/net_service.html
ответил 25 сен 2008 в 15:13
Билл Мичелл
3 золотых значка
28 серебряных значков
33 бронзовых знака
Вы можете использовать команду NET START, а затем проверить переменную среды ERRORLEVEL, например.
net start [your service]
if %errorlevel% == 2 echo Could not start service.
if %errorlevel% == 0 echo Service started successfully.
echo Errorlevel: %errorlevel% Отказ от ответственности: Я написал это наобум, но я думаю, что это сработает.
ответил 25 сен 2008 в 15:15
Йонас Энгстрем
3 золотых значка
37 серебряных значков
36 бронзовых знаков
Вместо проверки кодов это тоже работает
net start "Apache tomcat" || goto ExitError
:End
exit 0
:ExitError
echo An error has occurred while starting the tomcat services
exit 1
45 золотых значков
159 серебряных значков
269 бронзовых знаков
ответил 7 декабря 2013 в 16:45
1 золотой значок
9 серебряных значков
19 бронзовых знаков
Для этого я создал свой личный командный файл, мой немного отличается, но не стесняйтесь изменять его по своему усмотрению.
Я создал это некоторое время назад, потому что мне было скучно, и я хотел сделать простой способ, чтобы люди могли вводить окончание, начало, остановку или настройку на автоматический режим. Этот BAT-файл просто просит вас ввести имя службы, а все остальное он сделает за вас. Я не понимал, что он искал что-то, в чем говорилось об ошибке, я, должно быть, неправильно прочитал эту часть. Хотя обычно это можно сделать, введя >> output.txt в конце строки.
Если я ошибаюсь, любой может меня поправить.
@echo off
set /p c= Would you like to start a service [Y/N]? if /I "%c%" EQU "Y" goto :1 if /I "%c%" EQU "N" goto :2 :1 set /p var= Service name:
:2
set /p c= Would you like to stop a service [Y/N]? if /I "%c%" EQU "Y" goto :3 if /I "%c%" EQU "N" goto :4 :3 set /p var1= Service name:
:4
set /p c= Would you like to disable a service [Y/N]? if /I "%c%" EQU "Y" goto :5 if /I "%c%" EQU "N" goto :6 :5 set /p var2= Service name:
:6
set /p c= Would you like to set a service to auto [Y/N]? if /I "%c%" EQU "Y" goto :7 if /I "%c%" EQU "N" goto :10 :7 set /p var3= Service name:
:10
sc start %var%
sc stop %var1%
sc config %var2% start=disabled
sc config %var3% start=auto ответил 13 июн 2015 в 1:31

Использование кодов возврата из net start
и net stop
мне кажется лучшим методом. Попробуйте посмотреть на это: Коды возврата Net Start
.
27 золотых значков
122 серебряных значка
179 бронзовых знаков
ответил 25 сен 2008 в 15:12
12 золотых значков
67 серебряных значков
114 бронзовых знака
sc \\ip.ip.ip.ip stop p4_1 sc \\ip.ip.ip.ip stop p4_1 4 Stopping server for maintenance ответил 28 января 2014 в 20:52
12 серебряных значков
19 бронзовых знаков
Мы хотели бы думать, что “net stop” остановит службу. К сожалению, реальность не так уж черно-бела. Если для остановки службы требуется много времени, команда вернется до того, как служба будет остановлена. Однако вы не узнаете, пока не проверите уровень ошибок.
Решение, по-видимому, заключается в циклическом поиске состояния службы до тех пор, пока она не будет остановлена, с паузой каждый раз в цикле.
Я вижу, что первая служба долго останавливается, а затем “чистая остановка” для последующей службы просто ничего не делает. Посмотрите на службу в диспетчере служб, и ее состояние по-прежнему «Запущено» — без изменений на «Остановка». Тем не менее, я могу остановить эту вторую службу вручную с помощью SCM, и она останавливается через 3 или 4 секунды.
ответил 10 фев 2014 в 17:04
1 серебряный значок
1 бронзовый значок
или вы можете запустить удаленную службу с помощью этой команды: sc \\<computer> start <service>
ответил 27 января 2012 в 8:56

11 серебряных значков
15 бронзовых знаков
Я только что использовал приведенный выше пример Йонаса и создал полный список от 0 до 24 уровней ошибок. Другой пост правильный, что net start
и net stop
использовать только errorlevel
0 за успех и 2 за неудачу.
Но вот что сработало для меня:
net stop postgresql-9.1
if %errorlevel% == 2 echo Access Denied - Could not stop service
if %errorlevel% == 0 echo Service stopped successfully
echo Errorlevel: %errorlevel% Смена stop
к start
и работает в обратном порядке.
ответил 12 фев 2016 в 16:33

Ручной перезапуск службы в порядке – в файле services.msc есть кнопка «Перезапустить», но в командной строке в командах sc и net отсутствует переключатель «перезагрузка», и если перезапуск запланирован в файле cmd/bat, служба останавливается и запускается. немедленно, иногда возникает ошибка, потому что служба еще не остановлена, для ее завершения требуется некоторое время.
Это может вызвать ошибку:
ск стоп
начало сбн
Неплохо вставить таймаут, я использую ping (он пингуется каждую 1 секунду):
ск стоп
пинговать локальный хост -n 60
начало сбн
ответил 24 мая 2016 в 8:55
1 серебряный значок
3 бронзовых знака
Вот команда Windows 10 для запуска восстановления системы с использованием пакета:
sc config swprv start= Auto Вам также могут понравиться эти команды:
Изменить значение реестра на автоматический запуск Восстановление системы
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore” /v DisableSR /t REG_DWORD /d 0 /f
Создать точку восстановления системы
Wmic.exe /Namespace:\root\default Путь SystemRestore Вызов CreateRestorePoint «джибе спас ваш компьютер», 100, 12
Изменение использования диска для восстановления системы
ответил 26 ноя 2018 в 19:53
2 золотых значка
17 серебряных значков
24 бронзовых знака
- NET STOP/START
- PsService
- ВМИЦ
- Powershell также прост
для использования
вариант
SC и NET уже даны как анвесты. PsService добавляет несколько полезных функций, но требует загрузки с сайта Microsoft.
Но мне больше всего нравится WMIC, поскольку синтаксис WQL дает мощный способ управления более чем одной службой с помощью одной строки (объекты WMI также можно использовать через powershell/vbscript/jscript/c#).
Самый простой способ его использования:
И пример с WQL
wmic service where "name like '%%32Time%%' and ErrorControl='Normal'" call StartService Это запустит все сервисы, имя которых содержит 32Time
и иметь нормальный контроль ошибок.
Здесь
методы, которые вы можете использовать.
wmic service get /FORMAT:VALUE можно посмотреть доступную информацию об услугах.
ответил 5 ноя 2020 в 16:15

18 золотых значков
148 серебряных значков
186 бронзовых знаков
27 золотых значков
122 серебряных знака
179 бронзовых знаков
ответил
25 сентября 2008 г. в 15:26
wmic service MyService call StartService
wmic service MyService call StopService
1 серебряный значок 7 бронзовых знаков
Иногда вы можете обнаружить, что стоп не работает.
taskkill /pid [pid number] /fответил 9 мая 2018 в 9:52
Эндрю Пейт
36 серебряных значков
27 бронзовых знаковЯ пишу службу Windows на C#, цикл остановки/удаления/сборки/установки/запуска стал слишком утомительным. Написал мини-сценарий, назвал его
reploy.bat
и поместил в мой выходной каталог Visual Studio (тот, в котором есть встроенный исполняемый файл службы), чтобы автоматизировать цикл.Просто установите эти 3 переменные
servicename
: это отображается в панели управления службами Windows (services.msc)
slndir
: папка (не полный путь), содержащая файл решения (.sln)
binpath
: полный путь (не путь к папке) к исполняемому файлу службы из сборкиПРИМЕЧАНИЕ. Это необходимо запускать из командной строки Visual Studio Developer для
msbuild
команду на работу.SET servicename="My Amazing Service" SET slndir="C:dir\that\contains\sln\file" SET binpath="C:path\to\service.exe" SET currdir=%cd% call net stop %servicename% call sc delete %servicename% cd %slndir% call msbuild cd %bindir% call sc create %servicename% binpath=%binpath% call net start %servicename% cd %currdir%Может кому поможет 🙂
ответил 5 окт 2018 в 18:53
10 серебряных значков
12 бронзовых знаков:loop net stop tomcat8 sc query tomcat8 | find "STOPPED" if errorlevel 1 ( timeout 1 goto loop ) :loop2 net start tomcat8 sc query tomcat8 | find "RUNNING" if errorlevel 1 ( timeout 1 goto loop2 )Он продолжает работать чистая остановка
пока статус службы ОСТАНОВЛЕН, только после того, как статус остановлен, он запускается net start
. Если служба останавливается долго, чистая остановка
может завершиться неудачно. Если по какой-то причине служба не запускается успешно, она будет продолжать попытки запустить службу до тех пор, пока состояние не будет RUNNING.ответил 25 нояб. 2021 г. в 2:59
4 золотых значка
52 серебряных знака
67 бронзовых знаковС его помощью можно запустить службу или программу, которая нуждается в услуге
@echo taskkill /im service.exe /f taskkill /im service.exe /f set "reply=y" set /p "reply=Restart service? [y|n]: " if /i not "%reply%" == "y" goto :eof cd "C:\Users\user\Desktop" start service.lnk sc start service eof exitответил 10 марта 2022 в 17:46
1 Ответ
Нет
, к сожалению.
ответил22 декабря 2011 в 17:25
55 золотых значков
463 серебряных знака
476 бронзовых знаков
Я думаю, вы имеете в виду только один
.
22 декабря 2011 г., 17:26
22 декабря 2011 г., 17:29
Мне интересно, это короткое замыкание. Я никогда не думал, что пакетный скрипт может сделать это. Правое не выполняется, если %errorlevel% левого не равен нулю. Если вы используете один
, то оба выполняются независимо от результата левого.
22 дек 2011 в 17:33




![Проверка диапазона IP-адресов 2023 [Windows, macOS и Linux] Проверка диапазона IP-адресов 2023 [Windows, macOS и Linux]](https://msconfig.ru/wp-content/uploads/2023/08/use-ping-sweep-tool-to-ping-a-range-of-ip-addresses-2-120x120.webp)
