Команда запуска службы Windows
Обновлено: 20.11.2024
Если вы управляете службами Windows и вам удобно работать из командной строки, то команда Windows NET.EXE должна быть в вашем наборе инструментов. Используйте его, чтобы легко запускать, останавливать, приостанавливать или перезапускать любую службу из командной строки с повышенными привилегиями или в удобном сценарии или пакетном файле.
Использование NET для остановки службы Windows
Чтобы остановить службу, запустите:
где имя службы. Обязательно заключите его в кавычки, если он содержит пробел!
Например, чтобы остановить службу диспетчера очереди печати (с именем «Диспетчер очереди»), выполните:
Вот как это выглядит на нашем компьютере с Windows Server 2016:
Обратите внимание, что команда NET будет ждать остановки службы, прежде чем продолжить. Единственным исключением является случай, когда служба не отвечает или требуется более 30 секунд для выполнения требований.
Запуск службы Windows с помощью NET
Чтобы запустить бездействующую службу Windows, выполните:
Если все пойдет хорошо, ваша служба (и любая другая служба, от которой зависит ее работа) будет запущена через несколько секунд:
Как перезапустить службу Windows с помощью NET.EXE
Чтобы перезапустить службу, скажем, из пакетного файла, объедините команды "net stop" и "net start" следующим образом:
NET также будет приостанавливать и возобновлять службы Windows
Не все службы поддерживают паузу и возобновление работы, но если у вас есть служба, которая поддерживает NET, она тоже может пригодиться.
Чтобы приостановить службу, введите:
Чтобы возобновить приостановленную службу, выполните:
Вам также может понравиться.
AlwaysUp версии 13: простая установка Dropbox, OneDrive, Java и других сервисов в качестве служб Windows; Полная поддержка.
28 ответов на вопрос Основные инструменты для служб Windows: команда NET
При использовании команды NET в пакетном режиме для перезапуска я рекомендую добавить время для реакции служб. Я сделал это для одного из моих сервисов, который имеет тенденцию зависать. См. ниже;
@ЭХО.
@ECHO Остановка служб, подождите 10 секунд…
@ECHO OFF
Служба остановки REM
NET STOP ServiceNameHere
REM Ниже приведен таймер, позволяющий очистить оперативную память сервера после остановки службы.
REM Используйте числовое значение в командной строке 'timeout', чтобы контролировать, сколько секунд будет длиться пауза.
TIMEOUT /t 10 /NOBREAK
ЭХО.
NET START ServiceNameЗдесь
У меня есть вопрос, если мне нужно запустить несколько служб, а для запуска этих служб требуется более 30 секунд, то как я могу добиться этого, поскольку в настоящее время происходит сбой с ошибкой "время ожидания 'net' истекло через 30 секунд".
Благодарим за ранний ответ. спасибо
Привет. Мы рекомендуем создать пакетный файл, который использует команду SC, чтобы остановить службу и проверить ее позже.
Чтобы остановить службу с помощью SC, используйте:
имя службы SC STOP
Чтобы проверить, была ли служба успешно остановлена (после ожидания более 30 секунд), используйте следующую команду:
SC QUERY servicename | НАЙТИ «СОСТОЯНИЕ» | НАЙТИ «ОСТАНОВЛЕНО»
Переменной %ERRORLEVEL% будет присвоено значение 1, если служба не находится в состоянии "Остановлена".
Эта статья может содержать дополнительные рекомендации.
Мне нужен сценарий для проверки способности пользователей запускать службу. Несколько пользователей на нескольких серверах. Могу ли я сделать это с помощью команд SC или NET?
Если вы не против попробовать запустить службу, вы также можете использовать NET START и искать ошибки, как показано в примере на этой странице.
сэр нет, остановите telnet, как использовать эту команду
Обратите внимание, что если имя службы состоит из двух или более слов, его необходимо заключить в кавычки. Мне потребовалось время, чтобы найти это!
Я хочу перезапустить службы на нескольких серверах Windows, и это займет около 1 минуты. Я пытался использовать NET STOP, но он не ждал и просто выполнил следующую команду для запуска. Может кто-нибудь помочь мне с точным сценарием, который я могу использовать для перезапуска служб на нескольких серверах.
NET STOP будет ждать остановки службы только около 30 секунд. Если служба занимает больше нескольких секунд, NET выдаст сообщение «Невозможно дождаться».
К сожалению, нет способа заставить NET STOP «подождать дольше». И утилита SC ничем не поможет, она даже не пытается ждать.
Мы рекомендуем использовать пакетный файл «safeServiceStop.bat» (или «safeServiceRestart.bat»), описанный в этой статье.
Сохраните пакетный файл в своей файловой системе и вызовите его из существующего пакетного файла. Обратите внимание, что вы должны добавить «localhost» при вызове нового пакетного файла. Например, чтобы остановить службу под названием «Диспетчер очереди», используйте
safeServiceStop localhost Spooler
Обратите внимание, что рекомендуемое решение будет ожидать остановки службы неопределенное время.Если служба никогда не останавливается, ваш скрипт зависнет.
ОБНОВЛЕНИЕ 27.08.2018. Мы создали бесплатную утилиту командной строки (называемую ServicePilot), которая будет ждать столько, сколько вам нужно, при остановке службы. Вы можете использовать его вместо рекомендованного выше пакетного файла — это гораздо более простая альтернатива.
При использовании ServicePilot обязательно укажите соответствующее значение для флага "-wait". Например, чтобы остановить службу диспетчера очереди печати, если для ее выполнения может потребоваться 5 минут (300 секунд), используйте:
Обратите внимание, что служба будет принудительно остановлена, если она не остановится корректно в течение заданного периода времени.
Остановить службу Тобии. Не принимает команду Net Start, а Sc start, говорит что команда неверная, имя службы (Tobii Service)
Какую команду вы используете, чтобы остановить Тобии?
Убедитесь, что вы указываете имя службы. И заключите имя в кавычки, если оно содержит пробел!
Это было правильно, я поставил имя без ("), поэтому это было неправильно, теперь это сработало. Чистый старт «Тобии Сервис»
Если я использую net stop и net start на специальной службе, которая перестала работать правильно, это не помогает, она все еще работает неправильно.
Но при перезапуске той же службы из services.msc служба сбрасывается правильно. В чем разница?
(название сервиса состоит из одного слова, так что проблема не в кавычках..)
Выводит ли NET STOP/START какие-либо сообщения об ошибках на консоль? Возможно, он дает сбой и фактически не останавливает/запускает службу.
Распространенная проблема: NET STOP/START завершится ошибкой, если у вас недостаточно прав. Убедитесь, что вы работаете в командной строке с повышенными правами (начиная с «Запуск от имени администратора»).
Спасибо. Сообщений об ошибках нет, просто пишет, что служба остановлена. И да, я запускаю его на повышенных настройках.
Я попробую тайм-аут с первого комментария в следующий раз, когда буду за компьютером.
Очень распространенная проблема при работе с командами net или SC и некоторыми пользовательскими службами заключается в том, что вам нужно указать «Имя службы», а не «Отображаемое имя». Часто они совпадают, но не всегда. Щелкните правой кнопкой мыши службу в services.msc, чтобы увидеть две на вкладке «Общие», и убедитесь, что вы делаете «Net Start servicename» — и, как сказано выше, вам все равно придется заключать ее в кавычки, если в ней есть пробелы.
Вы можете изменить имя с помощью sc, чтобы сделать его проще, если хотите, но очевидно, что это может быть плохой идеей с системными/Windows-сервисами.
Кстати, я знаю, что в статье действительно говорится об этом, но ссылка на «название службы», которая объясняет это, довольно тонкая, и я думаю, что люди могут этого не заметить.
Спасибо, что указали на важную разницу между «Именем службы» и «Отображаемым именем».
Да, мы упомянули в статье о необходимости использовать «Имя службы», но, возможно, есть способ сделать его более заметным. Мы подумаем над этим — дайте нам знать, если у вас есть идеи, которые не отвлекают от основной темы статьи (использование NET).
Обратите внимание, что наша бесплатная утилита ServicePilot (более полнофункциональная альтернатива NET.EXE) устраняет путаницу в именах, принимая как «Имя службы», так и «Отображаемое имя». Вы можете использовать любой из них!
В центре внимания искусство. Удивительно из-за. Это дало мне, возможно, лучшую задачу. ровно через 30 секунд после входа в систему, одновременно с разрешением рабочего стола в моей системе запуска SSD, я наблюдаю, как слегка модифицированная версия вашего скрипта отключает службу Synergy, а затем включает ее примерно через 20 секунд. До сих пор при каждом входе в систему в течение ~ 6 месяцев с момента получения Synergy приходилось щелкать значок на панели задач для Synergy, а затем останавливать и запускать программу, потому что она не запускает клики клиента, пока служба не перезапустится. Просто лучший. Вот мой модифицированный скрипт:
@ECHO.
@ECHO Остановка служб, подождите 10 секунд…
@ECHO OFF
Служба остановки REM
Синергия NET STOP
TIMEOUT /t 10 /NOBREAK
ЭХО.
Синергия NET START
забыл поблагодарить ВАС, основные технологии, за недавнюю помощь в запуске моего ПЛАНИРОВЩИКА ЗАДАНИЙ... хотя и на совершенно другом компьютере, чем тот, который упоминался выше.
Если служба не запущена, START не произойдет, если вы не отформатируете его следующим образом:
чистая остановка
чистая начальная
Если служба не запущена, первая строка выдаст ошибку и выдаст ошибку, а вторая подхватит и запустит службу.
Я хочу перезапускать определенную службу в определенное время каждую неделю.
если я воспользуюсь указанными выше командами, будет ли это работать?
и если не удастся остановить службу, получу ли я какое-либо уведомление по электронной почте или есть ли способ получить уведомление по электронной почте мне, если что-то пойдет не так?
также, если перезагрузка с пакетным файлом будет выполнена успешно, я все равно получу уведомление вместо входа в систему и проверки журналов Windows
Да — вы можете использовать приведенные выше команды NET в сочетании с планировщиком заданий Windows для перезапуска определенной службы в определенное время.Мы добавим в блог статью с подробностями и сообщим вам, когда она будет готова.
К сожалению, в Windows нет простого встроенного способа уведомить вас об успешном или неудачном выполнении операции службы. Некоторые администраторы крупных сайтов настроили инструменты, которые отслеживают важные события в журнале событий и доставляют оповещения, но это может быть излишним, если вы не работаете в корпоративной среде.
Сообщите нам, если это решение вам не подходит.
У меня есть два пакетных файла, написанных в моем приложении для остановки и запуска службы Windows.
Есть ли способ проверить состояние указанной службы (независимо от того, остановлена она или нет) и перезапустить ее в определенное время в течение дня?
Для большей ясности:
Служба приложений останавливается, скажем, в 23:00 и снова запускается в 23:15.
Есть ли способ написать временные условия для перезапуска скрипта, исключая продолжительность 23:00-23:15?
Извините, если это не имеет особого смысла.
Привет. Вы можете использовать этот простой пакетный файл, чтобы проверить, запущена служба или нет:
Сохраните эти строки в новом файле .BAT и передайте имя службы (не отображаемое имя) в качестве первого параметра.
Что касается остановки в определенное время и перезапуска в другое время, мы рекомендуем использовать планировщик заданий Windows.
Создайте базовую задачу, которая останавливает службу в 23:00 (командный файл с запуском NET STOP), а другую — запуск службы в 23:15 (с NET START).
Этот процесс описан в разделе "Перезагрузка несколько раз в день (с помощью планировщика заданий Windows)" этой статьи по теме.
Командлет Start-Service отправляет стартовое сообщение контроллеру служб Windows для каждой из указанных служб. Если служба уже запущена, сообщение игнорируется без ошибки. Вы можете указать службы по их именам служб или отображаемым именам или использовать параметр InputObject для предоставления объекта службы, представляющего службы, которые вы хотите запустить.
Примеры
Пример 1. Запуск службы по ее имени
В этом примере запускается служба EventLog на локальном компьютере. Параметр Name идентифицирует службу по имени службы.
Пример 2. Отображение информации без запуска службы
В этом примере показано, что произойдет, если вы запустите службы с отображаемым именем, включающим слово «удаленный».
Параметр DisplayName идентифицирует службы по их отображаемому имени, а не по имени службы. Параметр WhatIf заставляет командлет отображать то, что произойдет, когда вы запускаете команду, но не вносите изменения.
Пример 3. Запуск службы и запись действия в текстовый файл
В этом примере на компьютере запускается служба инструментария управления Windows (WMI) и добавляется запись о действии в файл services.txt.
Сначала мы используем Get-Service, чтобы получить объект, представляющий службу WMI, и сохранить его в переменной $s. Далее запускаем службу. Без параметра PassThru Start-Service не создает никаких выходных данных. Оператор конвейера (|) передает объект, выводимый командлетом Start-Service, командлету Format-List для форматирования объекта в виде списка его свойств. Оператор перенаправления добавления (>>) перенаправляет вывод в файл services.txt. Вывод добавляется в конец существующего файла.
Пример 4. Запуск отключенной службы
В этом примере показано, как запустить службу, когда тип запуска службы отключен.
Первая попытка запустить службу Telnet (tlntsvr) не удалась. Команда Get-CimInstance показывает, что свойство StartMode службы Tlntsvr отключено. Командлет Set-Service изменяет тип запуска на Manual. Теперь мы можем повторно отправить команду Start-Service. На этот раз команда удалась. Чтобы убедиться, что команда выполнена успешно, запустите Get-Service .
Параметры
Запрашивает подтверждение перед запуском командлета.
Тип: | SwitchParameter |
Псевдонимы: | cf |
Позиция: | Имя |
Значение по умолчанию: | False | < /tr>
Принимать ввод конвейера: | False |
Допускать подстановочные знаки: | False |
Тип: | Строка [ ] |
Позиция: | Название td> |
Значение по умолчанию: | Нет |
Принять ввод конвейера: | False< /td> |
Допускать подстановочные знаки: | True |
Указывает службы, которые этот командлет пропускает. Значение этого параметра определяет параметр Name. Введите элемент имени или шаблон, например s* . Подстановочные знаки разрешены.
Тип: | Строка [ ] |
Позиция: | Название td> |
Значение по умолчанию: | Нет |
Принять ввод конвейера: | False< /td> |
Допускать подстановочные знаки: | True |
Указывает службы, которые запускает этот командлет. Значение этого параметра определяет параметр Name. Введите элемент имени или шаблон, например s* . Подстановочные знаки разрешены.
Тип: | Строка [ ] |
Позиция: | Название td> |
Значение по умолчанию: | Нет |
Принять ввод конвейера: | False< /td> |
Допускать подстановочные знаки: | True |
Определяет объекты ServiceController, представляющие запускаемые службы. Введите переменную, содержащую объекты, или введите команду или выражение для получения объектов.
Тип: | ServiceController [ ] |
Позиция: | 0 td> |
Значение по умолчанию: | Нет |
Принять ввод конвейера: | True< /td> |
Допускать подстановочные знаки: | False |
Указывает имена запускаемых служб.
Имя параметра является необязательным. Вы можете использовать Name или его псевдоним, ServiceName, или вы можете опустить имя параметра.
Тип: | String [ ] |
Псевдонимы: | ServiceName td> |
Позиция: | 0 |
Значение по умолчанию: | Нет |
Принимать ввод конвейера: | True |
Допускать подстановочные знаки: | False< /td> |
Возвращает объект, представляющий службу. По умолчанию этот командлет не создает никаких выходных данных.
Тип: | SwitchParameter |
Позиция: | Именованный |
Значение по умолчанию: | Нет |
Принять ввод конвейера: | False |
Допускать подстановочные знаки: | False |
Показывает, что произойдет, если командлет запустится. Командлет не запущен.
Тип: | SwitchParameter |
Псевдонимы: | wi |
Позиция: | Имя |
Значение по умолчанию: | False | < /tr>
Принимать ввод конвейера: | False |
Допускать подстановочные знаки: | False |