Остановить и запустить службу с помощью пакетного или cmd-файла?

Время на прочтение

Остановить и запустить службу с помощью пакетного или cmd-файла?

Продолжаем знакомиться с тем, как осуществлять управление службами Windows с использованием PowerShell. В предыдущем посте мы рассмотрели, как получить статус службы на локальном и удаленном компьютере, произвести фильтрацию служб (например, найти только остановленные службы) и определить зависимые службы. В этом посте будут рассмотрены такие достаточно тривиальные вещи, как:

  • Остановка службы
  • Запуск службы
  • Перезапуск службы
  • Приостановка и возобновление работы
  • Управление удаленными службами
  • Настраиваем автозагрузку службы

Мы уделим большее внимание разбору команд в PowerShell для осуществления выше перечисленного на локальном компьютере. В разделе “управление службами удаленных компьютерах” мы рассмотрим, ограничения работы в PowerShell v2 и v3. Подробности под катом.

Предыдущая статья:
Управляем службами Windows с помощью PowerShell. Часть 1. Получаем статус служб

Так как команда для получения статуса службы называется Get-Service, догадаться о том, как пишутся другие команды не составит труда. На худой конец мы можем спросить у PowerShell обо всех командах, так или иначе относящихся к работе со службами. Обратите внимание, что мы использовали параметр –noun для получения всех команд, связанных со службами.

Остановить и запустить службу с помощью пакетного или cmd-файла?

Взглянем на эти команды внимательнее.

STOP-SERVICE

Чтобы остановить службу, мы должны уточнить ее имя.

Однако в конвейер ничего не будет передано. Некоторые командлеты, такие как Stop-Service, созданы таким образом, что по умолчанию они не записывают объект в конвейер. Мы же заставим это сделать, использовав параметр –Passthru.

Если служба не запущена, то командлет ничего не выведет, равно как и не выдаст никакой ошибки. Поэтому иногда лучше передать объект в Stop-Service (естественно использовав при этом параметр –whatif).

Параметр –WhatIf был добавлен для того, чтобы мы посмотрели, что будет, если командлет будет запущен. Когда я удостоверюсь, что это именно та служба, которая меня интересует, я просто удалю -Whatif и остановлю службу.

Как я уже упомянул выше, если служба уже остановлена, то командлет ничего не сделает. И использование Stop-Service в этом случае никому не навредит. Однако я все же предпочитают более цивилизованный подход, а именно:

Если служба запущена, то объект передается в конвейер и отправляется в Stop-Service. Ниже приведен вариант с остановкой нескольких служб.

Некоторые службы не захотят останавливаться – в силу наличия зависимых служб – что мы и видим на скриншоте ниже.

Остановить и запустить службу с помощью пакетного или cmd-файла?

В таком случае используем параметр –Force. В большинстве случаев это работает, но без “защиты от дурака”. Помните, что команда также остановит зависимые службы.

START-SERVICE

Запуск службы осуществляется аналогичным образом. Он поддерживает параметр –Whatif, и вам придется использовать –Passthru, чтобы увидеть объекты.

И снова: если служба уже запущена, командлет ничего не сделает. Однако вы можете попытаться запустить службу и получите такую ошибку.

Остановить и запустить службу с помощью пакетного или cmd-файла?

Причиной тому в большинстве случаев является выключенные службы. Как конфигурировать настройки службы, я расскажу в следующей статье.
Если вы хотите запустить службы и все службы, зависимые от нее, используйте следующее выражение:

Мы должны явно получить зависимые службы, потому что Start-Service не запустит автоматически их.

RESTART-SERVICE

Вы удивитесь, но перезапуск службы работает также как два предыдущих примера. Используйте –Passthru, если хотите убедиться, что служба запущена.

Так как мы осуществляем остановку службы, нам может понадобиться параметр –Force.

ПРИОСТАНОВКА И ВОЗОБНОВЛЕНИЕ РАБОТЫ

Работа некоторых служб может быть приостановлена на некоторое время, а затем возобновлена, и мы можем это сделать через PowerShell. Однако если служба не удовлетворяет требованиям, мы получим такие ошибки. (на примере показано, что мы пытались приостановить службу bits)

Остановить и запустить службу с помощью пакетного или cmd-файла?

В чем же проблема? Смотрим на объект (используя Get-Service).

Если значение свойства CanPauseAndContinue равно True, значит мы можем приостанавливать и возобновлять работу службы. Найдем такие службы:

Как мы видим, не так много служб удовлетворяют этому требованию.

Готовы возобновить работу службы? Используйте следующее выражение:

Оба командлета также поддерживают –Whatif.

УДАЛЕННЫЕ СЛУЖБЫ

Как вы могли обратить внимание, все примере выше мы демонстрировали на локальном машине. И это неслучайно. К сожалению даже в PowerShell v3, ни у одного из этих командлетов нет параметра, который позволял бы управлять службой на удаленном компьютере. Get-Service, конечно, поддерживает параметр –Computername, но не более. Службу лицезреть вы сможете, а что-либо с ней сделать не получится. Нет, можно, конечно, если удаленный компьютер работает с PS v2 и включен PowerShell Remoting. Тогда мы можете использовать все выше приведенные команды, используя Invoke-Command для удаленного компьютера или PSSession. С другой стороны, проще управлять одной службой на нескольких серверах.

Остановить и запустить службу с помощью пакетного или cmd-файла?

Управление службами на удаленных компьютерах не ограничивается вышеперечисленным, но это уже будет предмет рассмотрения последующих статей.
Все эти командлеты могут быть использованы в конвейерном выражении и зачастую это лучший вариант. Использование Get-Service для получения объектов и последующая передача их в подходящий командлет.

УСТАНАВЛИВАЕМ УДАЛЕННЫЙ СТАТУС

Итак, мы выяснили, что у командлета Stop-Service отсутствует такой полезный параметр как –Computername. Мы можете использовать эти команды в удаленной сессии, обратившись к командлету Invoke-Command, что уже само по себе продуктивно, если вы работаете со службой на нескольких компьютерах. Одно можно запускать, останавливать, перезапускать, ставить на паузу и запускать заново, используя Set-Service.

Эта команда поддерживает параметр –WhatIf. Вы также должны использовать –Passthru для передачи объектов в конвейер.

Валидными значениям для параметра –Status являются “запущена” (running), “остановлена” (stopped) и “на паузе” (paused). Помните, что у службы есть зависимые службы, мы не сможете изменять ее, что и продемонстрировано на скриншоте ниже.

Остановить и запустить службу с помощью пакетного или cmd-файла?

К сожалению, у Set-Service отсутствует параметр –Force, поэтому придется вернуться к использованию PowerShell remoting и Invoke-Command. Если вы хотите перезапустить удаленную службу, используйте следующую команду:

Не забудьте использовать –Passthru, в противном случае вторая команда Set-Service ничего не осуществит.
Что по мне, так я предпочитаю работать сразу с несколькими службами, которые я не могу удаленно остановить, используя Set-Service, хотя их запуск проблем составляет. Я использую Invoke-Command. Но помните, что используя параметр –Computername PowerShell осуществляет подключение, используя RPC и DCOM, что может привести к проблемам с файрволом. Invoke-Command использует PowerShell remoting, который мы может быть еще не настроили или не включили.

УСТАНАВЛИВАЕМ ТИП АВТОЗАПУСКА СЛУЖБЫ

Set-Service полезнен, когда вы хотите включить или отключить службу, используя параметр –StartupType. Если Вы настроили службу, используя значения Automatic, Manual or Disabled. К сожалению, не существует варианта для Automatic (Delayed).

Однако, просто взглянув на объект, мы не сможем сказать, к какому типу автозагрузки он относится.

Как это сделать – одна из тем следующей статьи.
Помните, что изменение типа автозагрузки не повлияет на текущий статус службы.

Так что если вы хотите выключить и остановить (или включить и запустить) службу, передайте объект в подходящий командлет.

Технически, Set-Service позволяет вам изменить отображаемое имя службы и описание, но лично мне никогда не приходилось использовать в своей работе. Я использую Set-Service для включения и выключения служб. Если необходимо управлять службами удаленно, то я использую Invoke-Command.
Все, что я продемонстрировал в последних статьях, было связано с использованием специфических типов объектов службы, которые, как вы могли заметить, имеют некоторые ограничения. В следующей статье мы рассмотрим другие возможности по управлению службами, которые призваны обойти эти ограничения.

Upd:
В посте приведены переводы статей с портала 4sysops.com
Managing Services the PowerShell way – Part 3
Managing Services the PowerShell way – Part 4

Здравствуйте, оказался в не легком положении.
Имею машины с Windows 7 которые подключаются через OPEN VPN, у шлюза есть Fail Over, если упадет первый оператор, Mikrotik сменит на другой. Скрипт каждые 10 минут проверяет доступность первого шлюза, если он не доступен, заменяет конфиг файл на резервный, все отлично, но есть одна проблема, для того чтобы конфиг вступил в силу, нужно перезагрузить службу OpenVPN. Внедрил в службу команду на стоп старт через net, но если запуск скрипта осуществляет планировщик задач, то Access denied, а если скрипт запустить вручную, то все работает.
На компах только локальный администратор и планировщик запускает скрипт от имени админа.

Буду рад любой помощи.

set ipaddr2= Резервный_ип
set state2=down

Продолжаю тему создания нетривиальных bat-файлов для тривиальных задач, начатую здесь.

Наверняка многие сталкивались с задачей, когда для каких-либо целей в ОС Windows необходимо создать задание, выполняемое по расписанию (scheduled task).
Для этих целей имеется простой графический интерфейс. Однако как поступить, если задание должно создаваться автоматически?
Попробуем решить эту задачу с использованием примитивного bat-скрипта, который будет выполняться в практически любой версии Windows.

Для удобства, создадим на машине локального технологического пользователя, под которым будет работать наше задание по расписанию. Это удобно тем, что для пользователя можно задать права, которые необходимы только для выполнения определенных действий.

:/>  Как перезапустить службу windows с использованием power shell

А как известно пользователь должен находиться в группе с определенными правами. Вот тут и возникает определенная сложность, т.к. если в скрипте четко задать имя группы, то могут возникнуть проблемы на машине с другой локализацией, например китайской. И как будет называться на китайском группа «Пользователи» узнать будет не очень просто. К счастью, в ОС Windows группы привязаны к так называемому Group SID. Зная, к примеру, Group SID группы «Администраторы», мы можем использовать его в скрипте. Например, S-1-5-32-545 — это локальные пользователи, а S-1-5-32-544 — администраторы.
Теперь нужно определить имя для заданного Group SID, используемого в данной локализации. Тут нам на помощь придет WMIC (WMI command-line).

Ну а далее создаем само задание, выполняемое по расписанию:

Вот и все. Надеюсь, что мой небольшой мануал окажется полезен и вы сэкономите свое время при выполнении данной задачи.

Quartz.NET не пробовал, попробуйте, вдруг понравится =)

Обычно “Правильно” у каждого свое, мои соображения следующие:

1. Короткие интервалы (секунды, минуты)

Набор задач для коротких интервалов времени обычно фиксирован и задачи тесно связаны между собой. Поэтому предложенный вами вариант будет вполне уместным, но есть и недостатки: При перезапуске службы все задачи будут прерваны в произвольном месте, если не предусмотрен особый код завершения работы службы, таймеры будут перезапущены. Для изменения интервалов необходимо перезапускать службу, если не предусмотрена специальная команда для этого.

К достоинствам можно отнести возможность прямой передачи данных между задачами с использованием привычных типов данных, достаточно высокую точность срабатывани по времени, для ультра коротких интервалов можно использовать таймер на основе StopWatch, имеющий максимальную точность измерения времени.

Альтернативой может служить набор консольных программ (одна задача – одна программа) запускаемых с помощью системного планировщика. Для коротких интервалов преимущества данного метода весьма сомнительны если вообще есть.

2. Средние интервалы (часы, дни)

Набор задач для таких интервалов иногда требует изменений набора выполняемых действий, а также принудительного выполнения задач мне расписания, что также накладывает ряд требований на применяемое решение.

В службе с внутренними таймерами, придется предусмотреть специальные методы для управления списком выполняемых задач, принудительного запуска отдельных задач, сохранения расписания не смотря на внеплановый запуск. Также стоит отметь что служба будет висеть в памяти постоянно и расходовать ресурсы, особенно печально если где-то есть незначительная утечка, которую сразу не выявили.

Для набора программ работающих по системному планировщику, ничего дополнительного делать не придется, этот функционал уже заложен в системном планировщике. Системный планировщик задач в любом случае запущен всегда, а вот ваши задачи будут потреблять ресурсы только во время выполнения, проблема постоянной утечки памяти при длительной работе отсутствует. Добавление и удаление задач не составляет особого труда. Возможно обновление программ выполняющих задачи независимо друг от друга. Возможно увеличение производительности за счет запуска особо тяжелых задач на отдельных компьютерах. К недостаткам – необходимость обмена данными между связанными задачами посредством файлов. Учитывая длину интервалов файловый обмен не очень страшен, но время на разработку протокола и формата файлов потратить придется.

3. Длинные интервалы (недели, месяцы, годы)

Набор задач почти гарантированно будет меняться в процессе работы, и задачи редко бывают связаны между собой, либо объединяются в одну большую задачу. Со мной могут не согласиться другие участники, но лично мне, на таких интервалах использовать монолитную службу просто неудобно. К тому же в службе придется предусмотреть еще и синхронизацию времени, хотя бы с системными часами, и календарем, если нужно запускать задание, например раз в неделю, или по первым числам месяцев. Системный планировщик в данном случае освобождает разработчика от необходимости писать что либо кроме кода выполняемых задач.

4. Неопределенные интервалы или работа по событию

Этот вариант конечно имеет малое отношение к таймерам, однако в рамках сравнения двух подходов его стоит рассмотреть.

В службе необходимо предусмотреть код слушающий необходимые события. Обрабатываемые события могут быть вынесены в конфигурацию, а вот добавление или удаление действий без пересборки и переустановки службы уже не сделать.

Системный планировщик также умеет срабатывать по событиям, но ограничен событиями, которые отслеживает операционная система. Чтобы добавить что-то свое, придется определить и зарегистрировать в системном логе источник событий, коды событий, возможно даже отдельный журнал событий и т.д. В отдельных сложных случаях результат стоит потраченного времени. Также для сложных случаев обработки событий можно написать свой планировщик, который будет реагировать на все что вам нужно и запускать программы для обработки задач вместо системного планировщика.

В целом, для работы по событиям, можно считать оба способа равнозначными.

Собственный планировщик задач.

В некоторых случаях использовать системный планировщик не очень удобно. Тогда можно реализовать свой. Идея довольно простая:

  • один таймер с фиксированным минимальным шагом, например раз в секунду.
  • по событию таймера сравниваем текущее время с расписанием запланированных заданий.
  • запускаем в отдельном потоке или процессе выполнение заданий, время которых меньше либо равно текущему.
  • На главную
  • Категории
  • Прочее
  • Автоматический перезапуск службы агента сервера 1С – скрипт + расписание

Добрый день. Поступила заявка от 1С-ников, что необходимо ночью перезапускать службу агента сервера 1С на 8-ке. Как многим известно, что данную службу просто так нельзя “перезапустить”, иначе зависшие сессии так и остаются “висеть”, ее необходимо сначала остановить, а после снова запустить. Порывшись немного в интернете, пересмотрев кучу скриптов – собрал из многообразия один, не большой, полностью рабочий, уже оттестировал его на серверах, теперь выкладываю на ваше обозрение и пользование.

Скрипт перезапуска службы агента сервера 1С

В данном разделе я приведу скрипт .bat, который у меня получился, а так же дам краткое описание того, что за что отвечает в моем случае.

Собственно сам скрипт:

Давайте рассмотрим его подробнее:

  • Первым делом отключаем уведомления о выполнении, пусть это все работает в фоновом режиме
  • Далее указываем где будет хранится наш лог-файл, куда будет писаться дата и время запуска и остановки службы (можно не писать лог, но на всякий случай пусть будет)
  • Пишем в Лог дату и время начала остановки
  • Останавливаем службу агента сервера, в моем случае она называется так – 1C:Enterprise 8.3 Server Agent (1640) и пишем ее статус в лог файл (ниже приведу пример что в логе появляется)
  • Далее делаем задержку в 15 секунд, чтобы дождаться, пока служба останавливается (пинг равен примерно 1 секунде, первый проходит моментально, поэтому делаем время в секундах +1)
  • Опять записываем в лог дату в время
  • Запускаем службу обратно
  • Делаем задержку в 5 минут, если служба не остановилась за 15 секунд, то она не запустится естественно, что то видимо зависло сильно и будем ждать 5 минут.
  • Далее проверяем, запустилась ли служба и работает ли она? Если не работает, то выполняем ее повторный старт.
  • Завершаем работу с cmd.

Все, вот такой вот получился скрипт. Я не программист, поэтому может он не совсем верный с точки зрения выполнения сценариев и программного кода, но для меня важно, чтобы это работало – а это работает! Данный скрипт у меня выполняется каждый день, каждый час с 00:00 до 7:00, но об этом позже.

Пример лог файла:

Настройка выполнения *. bat по расписанию

Как я уже говорил выше, выполнение скрипта у меня происходит автоматически, каждый день он запускается ежечасно с 00:00 до 7:00. Сейчас я расскажу, как это сделано у меня.

Остановить и запустить службу с помощью пакетного или cmd-файла?

Выбираем пункт “Создать задачу”:

Остановить и запустить службу с помощью пакетного или cmd-файла?

На вкладке “Общие” задаем имя задания, его описание и пользователя, от которого оно будет выполняться. По умолчанию там будет пользователь, под которым вы вошли в данный момент в систему.

Далее идем в закладку Триггеры и настраиваем, когда нам надо запускать задачу.  В моем случае это ежедневно выполнять в 00:00 и повторять ее каждый час в течении 7 часов.

Остановить и запустить службу с помощью пакетного или cmd-файла?

Далее идем во вкладку Действия и создаем действие на выполнения скрипта.

Остановить и запустить службу с помощью пакетного или cmd-файла?

Все, на этом все готово.  Как можем увидеть в журнале, задача с такими параметрами успешно выполняется и ровно то время, которое у нас задано в скрипте:

Остановить и запустить службу с помощью пакетного или cmd-файла?

Заключение

Вот так не очень сложно создается скрипт на перезапуск службы агента сервера 1С и настраивается его расписание. Я думаю что многие итак знают как сделать одно или второе, но я думаю что кому то это пригодится. Если у Вас возникнут проблемы или вопросы – задавайте их в комментариях, постараюсь помочь чем смогу. Если будут какие-то дополнения или предложения – с удовольствием тоже выслушаю.

:/>  21 лучшее программное обеспечение для анализа конфигурации ПК, мониторинга и сравнительного анализа

Так же можно почитать про скрипт – удаление файлов старше n дней

Остановить и запустить службу с помощью пакетного или cmd-файла?

Ваш покорный слуга – компьютерщик широкого профиля: системный администратор, вебмастер, интернет-маркетолог и много чего кто. Вместе с Вами, если Вы конечно не против, разовьем из обычного блога крутой технический комплекс.

Как я могу написать сценарий bat или cmd, чтобы остановить и запустить службу надежно с проверкой ошибок (или дайте мне знать, что это не было успешным по какой-либо причине)?

14 ответов

использовать SC (service control) команда, это дает вам гораздо больше возможностей, чем просто start & stop.

скажите вам, преуспели ли они или потерпели неудачу довольно ясно. Например

при запуске из пакетного файла, у вас есть доступ к ERRORLEVEL кода возврата. 0 указывает на успех. Все, что выше указывает на ошибку.

как bat-файл, error.bat:

вывод выглядит так:

– 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.

вы можете использовать команду NET START, а затем проверить переменную среды ERRORLEVEL, например

отказ от ответственности: я написал это с самого начала, но я думаю, что это сработает.

вместо проверки кодов, это тоже работает

Я создал свой личный пакетный файл для этого, мой немного отличается, но не стесняйтесь изменять, как вы считаете нужным.

The %var% это просто способ для пользователя, чтобы иметь возможность ввести свой собственный сервис в этом, вместо того, чтобы идти изменить файл bat каждый раз, когда вы хотите, чтобы запустить/остановить другую службу.

Если я ошибаюсь, любой может чувствовать себя свободно, чтобы исправить меня на этом.

используя коды возврата от net start и net stop Мне кажется, что это лучший метод. Попробуйте взглянуть на это:чистый старт коды возврата.

здесь явно показано, как добавить строку в пакетный файл, который убьет удаленную службу (на другой машине) если вы являетесь администратором на обеих машинах, запустите .bat как администратор, и машины находятся в одном домене. Имя машины следует за форматом UNC myserver

sc ip.ip.ip.ip stop p4_1

sc ip.ip.ip.ip stop p4_1 4 Stopping server for maintenance

мы хотели бы думать, что “чистая остановка” остановит службу. К сожалению, реальность не такая уж черно-белая. Если службе требуется много времени для остановки, команда вернется до остановки службы. Вы не знаете, если вы отметите ошибки.

решение, похоже, заключается в циклическом поиске состояния службы до тех пор, пока оно не будет остановлено, с паузой каждый раз вокруг цикла.

Я вижу впервые служба занимает много времени, чтобы остановиться, а затем “чистая остановка” для последующей службы просто ничего не делает. Посмотрите на службу в диспетчере служб, и ее состояние по – прежнему “запущено” – без изменения на “остановку”. Тем не менее, я могу остановить эту вторую службу вручную с помощью SCM, и она останавливается через 3 или 4 секунды.

Я просто использовал пример Джонаса выше и создал полный список от 0 до 24 уровней ошибок. Другой пост правильно, что net start и net stop использовать только errorlevel 0 для успеха и 2 отказа.

но это то, что сработало для меня:

изменить stop до start и работает в обратном направлении.

ручной перезапуск службы-это ok-services.msc имеет кнопку” Перезагрузка”, но в командной строке как sc, так и net командам не хватает переключателя” перезагрузка”, и если перезапуск запланирован в файле cmd/bat, служба останавливается и запускается немедленно, иногда она получает ошибку, потому что Служба еще не остановлена, ей нужно некоторое время, чтобы закрыть вещи.

Это может привести к ошибке:
СК остановка
sc start

Это хорошая идея, чтобы вставить тайм-аут, я использую пинг (он проверяет каждую 1 секунду):
Южная Каролина остановка
ping localhost-N 60
sc start

иногда вы можете найти стоп-не работает..

мой SQlServer иногда делает это. С помощью следующей командной строки убивает его. Если вам действительно нужен ваш сценарий, чтобы убить вещи, которые не останавливаются. Я бы сделал это в крайнем случае

Я пишу службу windows на C#, цикл stop/uninstall/build/install/start стал слишком утомительным. Написал мини-скрипт, назвал его reploy.bat и упал в мой выходной каталог Visual Studio (тот, который имеет встроенный исполняемый файл службы) для автоматизации цикла.

просто установите эти 3 Варс

servicename: это отображается на панели управления Windows Service (services.msc)

slndir : папка (не полный путь), содержащая ваше решение (.ФСЛ) файл

binpath: полный путь (не путь к папке) к исполняемому файлу службы из сборки

Примечание: это должно быть запущено из командной строки разработчика Visual Studio для msbuild команда для работы.

SET servicename=”My Amazing Service”
SET slndir=”C:dir hatcontainsslnile”
SET binpath=”C:path oservice.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%

может быть, это поможет кому-то 🙂

Пишем BAT(батник) файл для запуска и остановки службы в Windows

Возникла необходимость автоматизировать для пользователей запуск и остановку определенной службы Windows. Самое просто на первый взгляд, создание батника или Bat файла Windows. Есть и другие варианты, но решил сделать именно через батник.

Вроде все не сложно, но как всегда в Windows все не так просто, или просто, но глупо.

1. Задача: В системе есть программа, и её Бета-версия. Запуск основной, по ярлыку. Запуск Бета-версии только после запуска службы, по окончанию, отключение этой службы. Ничего сложного нет, зайти в службы и в зависимости от задачи «включить/выключить». Но вот для некоторых сотрудников это целая проблема. Поэтому пишем батник!

2. Структура батника. После поиска структуры батника, пришел к этому варианту:

3. Меняем отражение расширений файлов. По умолчанию в Windows не отражаются расширения файлов. Правим на примере Windows 10: — открываем любую папку; — вверху вкладка «Вид», «Параметры», «изменить параметры папок и поиска»; — вкладка «Вид», спускаемся до поля «Скрывать расширения для. » — снимаем галку.

Теперь файлы, в частности на рабочем столе имеют вид (на примере TXT файла): Было «Файл», Стало «Файл.txt»

4. Создаем файл батника. Создаем «txt» файл и переименовываем его в «Запуск службы.txt». Открываем, пишем наш Bat файл:

Где взять имя службы? Открываем службы, находим нужную, открываем и смотрим поле «Имя службы»:

В итоге у нас будет:

net start AtolLicSvc(Если служба AtolLicSvc, у вас ваш вариант)

Сохраняем и переименовываем файл с «Запуск службы.txt» в «Запуск службы.bat«

5. Проверяем работу службы. Казалось бы все! Но нет! Это же Windows! Выскакивает окно запуска службы и пропадает. А служба как спала так и спит. Что не так? Все дело в правах админа. Вроде не сложно, но пояснять сотрудникам, запускайте с правами админа, слишком сложно для их понимания! Читаем по быстрому инфу «как запустить bat файл от имени админа автоматический?», ответ:

ничего сложного. — «правой кнопкой мыши на файле», «свойства»; — вкладка «ярлык», . эмм. а где она? О_о

6. Вносим правки, создаем ярлык

Логично, вкладки нет, это не ярлык! Создаем из нашего батника «Запуск службы.bat» «Ярлык»: убираем батники подальше от рук пользователей, допустим на диск D. Правой кнопкой мыши на батнике: «отправить», «рабочий стол (создать ярлык)». И вот уже на ярлыке:

— «правой кнопкой мыши на ярлыке», «свойства»; — вкладка «ярлык», кнопка «Дополнительно»; — ставим галку «запуск от имени администратора».

7. Повторный запуск службы через BAT файл. После этих манипуляций, если запустить ярлык «Запуск службы.bat — ярлык», служба стартует, согласно структуре в файле «net start AtolLicSvc»

Для батника который будет останавливать службу, все тоже самое. И да, вариантов решения задачи много, спорить не буду, но описал вариант решения который применил сам.

Запуск службы windows по расписанию

Как сделать автоматический запуск(перезапуск) службы windows по расписанию? С таким вопросом я столкнулся совсем недавно, участвуя в одном из проектов по своей работе. Решение оказалось достаточно простым.

:/>  Возврат на клавиатуре действия

Остановить и запустить службу с помощью пакетного или cmd-файла?

Настройка автоматического запуска или перезапуска службы осуществляет в два простых шага

  • Шаг 1 — создать сценарий запуска/перезапуска службы.
  • Шаг 2 — создать задачу и настроить расписание ее выполнения.

Создание сценария для службы

Сценарий запуска/перезапуска службы представляет собой обычный батник (bat-файл), который будет содержать команды:

1. Для запуска службы

2. Для перезапуска службы

Пример файла перезапуска службы windows

В качестве примера использована служба KMService.

Итак, создаем батник (bat-файл) с командами для перезапуска службы, который будет содержать две строки:

Для обеспечения автоматического выполнения сценария перезапуска службы по расписанию: создается специальная задача, которая будет выполнять сценарий (запускать батничек).

Создание задачи в windows

Для создания задачи необходимо перейти в «Панель управления», кликнув в меню «Пуск» на пункт «Панель управления».

Остановить и запустить службу с помощью пакетного или cmd-файла?

Далее, переходим в раздел «Администрирование».

Остановить и запустить службу с помощью пакетного или cmd-файла?

В разделе «Администрирование» необходимо выбрать пункт «Планировщик заданий».

Остановить и запустить службу с помощью пакетного или cmd-файла?

В окне «Планировщик заданий» кликаем правой кнопкой мыши на «Планировщик заданий» и выбираем пункт меню «Создать задачу».

Остановить и запустить службу с помощью пакетного или cmd-файла?

В окне «Создание задачи» указываем Имя задачи, ставим галочку «Выполнить с наивысшими правами» и переходим на вкладку «Триггеры».

Остановить и запустить службу с помощью пакетного или cmd-файла?

На вкладке «Триггеры» отображаются задаются условия запуска задачи. Для того чтобы создать расписание задачи перезапуска службы нажимаем на кнопку «Создать».

Остановить и запустить службу с помощью пакетного или cmd-файла?

Заполняем параметры расписания задачи по перезапуску службы windows и нажимаем кнопку «Ок».

Остановить и запустить службу с помощью пакетного или cmd-файла?

После создания расписания запуска задачи, необходимо указать наш сценарий(батничек), который должен выполнятся по расписанию. Для этого, переходим на вкладку «Действия» и нажимаем кнопку «Создать».

Остановить и запустить службу с помощью пакетного или cmd-файла?

В окне «Создание действия» выбираем действие — «Запуск программы». После этого, нажимаем на кнопку «Обзор», ищем и выбираем наш файл со сценарием и нажимаем на кнопку «Ок».

И наконец, в окне «Создание задачи» нажимаем на кнопку «Ок».

Остановить и запустить службу с помощью пакетного или cmd-файла?

Готово! Если все было сделано правильно, то задача будет выполняться по расписанию и будет перезапускать выбранную службу windows.

Batch file to restart a service. Windows [closed]

Want to improve this question? Update the question so it’s on-topic for Stack Overflow.

Closed 10 years ago .

How can I restart a windows service using a .bat file? I am on windows server.

Остановить и запустить службу с помощью пакетного или cmd-файла?

1 Answer 1

No net restart , unfortunately.

Остановить и запустить службу с помощью пакетного или cmd-файла?

Related

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Остановить и запустить службу с помощью пакетного или cmd-файла?

Перезагрузка Windows через командную строку — Выключение/Перезагрузка из командной строки — Как перезагрузить компьютер из командной строки

Перезагрузка/Выключение компьютера средствами командной строки — иногда очень полезная процедура. Перезагрузить/выключить компьютер можно различными способами. Список команд для перезагрузки/выключения компьютера с помощью стандартных средств Windows

Как перезагрузить компьютер через командную строку, удаленный рабочий стол

Или «как перезагрузить компьютер из командной строки» Для перезагрузки через удаленный рабочий стол под Windows XP/Vista/7 можно выполнить команду: shutdown -t 0 -r -f Параметры: -t 0 означает перезагрузка в течении «ноль» секунд, -r перезагрузка а не выключение (reboot) -f завершает все запущенные приложения (force, форсированное выключение с принудительным завершением программ)

Немедленная перезагрузка через командную строку:

Немедленное выключение через командную строку:

2 ответа

Это должно работать. Он устанавливает заголовок «title» для start.bat, а затем использует фильтр, чтобы найти это окно и закрыть его. / T также просто для закрытия дочерних процессов.

Как перезапустить процесс с использованием. bat файла

Каждый раз, когда я случайно отключаю клавиатуру Logitech, процесс «LCore.exe» не отвечает. Я должен вручную завершить процесс и запустить его снова. Я хочу создать файл.bat, чтобы сделать это для меня, но я не знаю, как это сделать.

Я попытался использовать это, но он, похоже, не работает.

Попробуйте добавить /f к taskkill, это заставит вас убить процесс.

Взлом для решения другой проблемы:

Ваша первая команда просит закрыть программу. Если он висит, он не может реагировать.

См. taskkill/? и см. параметр параметра /f для параметра силы.

Для не консольной программы сообщение WM_Close отправляется в главное окно (т. WM_Close Как если бы вы нажали красную кнопку X на панели заголовка). При использовании /f TerminateProcess используется (как остановка процесса на вкладке процесса диспетчера задач).

Приложение может запросить у пользователя подтверждение до уничтожения окна путем обработки сообщения WM_CLOSE и вызова функции DestroyWindow только в том случае, если пользователь подтверждает выбор.

По умолчанию функция DefWindowProc вызывает функцию DestroyWindow для уничтожения окна.

Функция TerminateProcess используется для безоговорочного завершения процесса. Состояние глобальных данных, поддерживаемых библиотеками динамической компоновки (DLL), может быть скомпрометировано, если TerminateProcess используется, а не ExitProcess.

TerminateProcess инициирует завершение и немедленно возвращается. Это останавливает выполнение всех потоков внутри процесса и требует отмены всех ожидающих ввода-вывода. Прекращенный процесс не может выйти до завершения или отмены всех ожидающих ввода-вывода.

Процесс не может препятствовать тому, чтобы он был прекращен.

В каких случаях использовать Reboot. bat

  • если со временем скорость хэширования падает примерно на 1-1,5 m/hs на карту
  • нечастые / разовые сбои видеокарты
  • ваши фермы установлены удаленно и к ним затруднен доступ

Пример с ключом -r 1

Таким образом, батник с нужной Вам монетой выозовет файл «reboot.bat», если что-то пойдет не так с майнингом. Вы можете создать сами файл «reboot.bat» и выполнить некоторые действия, например, перезагрузить систему, если вы поместите туда следующую строку: «shutdown / r / t 5 / f».

Пример файла перезагрузки

Остановить и запустить службу с помощью пакетного или cmd-файла?

Надеемся, что это решит Вашу проблему.

Примеры использования утилиты shutdown

Если запустить утилиту shutdown с параметром /i, то на эране увидите примерно следующее (актуально для Windows 7):

Остановить и запустить службу с помощью пакетного или cmd-файла?

При использовании отложенной перезагрузки:

Получим следующее уведомление на экране:

Остановить и запустить службу с помощью пакетного или cmd-файла?

Если вы желаете отменить намеченную перезагрузку, то используйте команду:

Сделай сам

Блог о самоделках, поделках, программировании на ява скрипте и iMacros, написании собственных программ, и заработку в интернете. А так же некоторые тонкости и настройки броузера Mozilla и других программ.

Остановка запуск служб BAT файлом, Отключение служб включение служб BAT файлом, добавление в реестр BAT файлом, остановка служб BAT файлом

Поскольку у меня сейчас стоит виндовс 10, а она конфликтует на моем ноутбуке с драйвером видеокарты gf 410m и компьютер после установки драйвера кирпичится, а так же Бесконечное завершение работы и бесконечная перезагрузка из за установленного приложения от Мегафона юсб 4ж модема, а точнее конфликт происходит конкретно из за службы Megafon Internet Sevice, то мне как раз таки и понадобится Отключение служб включение служб BAT файлом, добавление в реестр BAT файлом, остановка служб BAT файлом.

То есть когда мне понадобится приложение Мегафон интернет, то я могу запустить его прямо из папки с программой (само приложение деинсталлировано из системы), которая требует запуска службы Megafon Internet Sevice и при нажатии на кнопку Запустить службу — приложение запускает эту службу. Но вот проблема — запустить запускает, а завершить — нет. То есть служба постоянно висит в системе при включении и выключении компьютера. А поскольку виндовс 10 конфликтует с этой службой, то ее необходимо завершить и отключить, чтобы при завершении работы виндовс 10 не пошло Бесконечное завершение работы (приходится вырубать топором — удерживать кнопку питания) или Бесконечная перезагрузка виндовс 10 (если отправили комп на перезагрузку). Так вот чтобы этого не было — службу необходимо отключать до Завершения работы виндовс 10. Еще раз — поэтому мне и нужно отключение служб включение служб BAT файлом, добавление в реестр BAT файлом, остановка служб BAT файлом.

Итак, как ОСТАНОВИТЬ службу Megafon Internet Sevice с помощью бат файла И отключить службу в реестре, чтобы при перезапуске она снова не запускалась. Для этого я сделал BAT файл и добавил туда 2-3 строки, 1я из которых останавливает службу, а 2я отключает ее в реестре.

NET STOP «MegaFon Internet Service» reg add «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMegaFon Internet Service» /v Start /t REG_DWORD /d 4 /f pause

А для запуска службы нужно использовать следующее: NET START «MegaFon Internet Service»

Таким образом, когда я запускаю когда мне нужно мегафон приложение, то после использования его делаю запуск бат-файла — который останавливает служба и отключает ее и ноутбук работает без глюков — то есть штатное Завершение работы работает корректно.