Table of Contents
- Introduction
- 1. Find service name
- 2. Stop service
- 3. Start service
- Summary
- Next Steps
Introduction
This tutorial describes how to stop/start a windows service via batch or cmd.
1. Find service name
First of all, you need to get the service name, to do this:
- Click windows -> type “services”
- When the “services” window opens, right-click the desired service -> properties, then get the service name as below:
2. Stop service
In order to stop the service via batch script:
- Open cmd as administrator.
- Run this command: NET STOP <SERVICE_NAME>
3. Start service
In order to start the service via batch script:
- Open cmd as administrator.
- Run this command: NET START <SERVICE_NAME>
Summary
This tutorial describes how to stop/start a windows service via batch or cmd.
Next Steps
If you’re interested in learning more about the basics of Java, coding, and software development, check out our Coding Essentials Guidebook for Developers, where we cover the essential languages, concepts, and tools that you’ll need to become a professional developer.
Thanks and happy coding! We hope you enjoyed this article. If you have any questions or comments, feel free to reach out to jacob@initialcommit.io.
Final Notes
Related Articles
Back to Blog
Запускатор служб
Скрипт на PowerShell для пакетного запуска или остановки заранее определенных служб Microsoft Windows.
Как пользоваться
Введите в текстовой файл список служб (см. пример), которые нужно запускать или останавливать с помощью скрипта. По одной на строку. Можно использовать шаблоны, понятные командлету Get-Service (подробности — в документации к языку).
Собственно, это всё. Вызовите Launcher.ps1 с параметром path (путь к текстовому файлу) и параметром start, чтобы запустить службы:
powershell .\Launcher.ps1 -start -path "D:\Services.txt"
Используйте параметр stop, чтобы остановить их:
powershell .\Launcher.ps1 -stop -path "D:\Services.txt"
Если не указан ни параметр start, ни параметр stop — скрипт сам решит, запускать или останавливать службы. Для этого он определит статус первой службы в списке: если она работает — все службы из списка будут остановлены, если выключена — скрипт попытается их запустить.
Второй скрипт, Disabler.ps1, тоже принимает путь к текстовому файлу в параметр path. Для каждой службы из списка в файле скрипт включит ручной режим запуска. Его удобно вызывать при первоначальной настройке, чтобы отключить автоматический запуск служб, которыми вы в дальнейшем планируете управлять через скрипт Launcher.ps1.
Возможные проблемы
Скрипту нужны админские права?
Да. Если выполнить скрипт без прав администратора — он потребует их и, получив, перезапустит сам себя.
Хочу расширить логику запуска и остановки. Куда смотреть?
В самый конец скрипта — там есть блок, начинающийся с If ($start) {
. В первую ветку добавьте логику для запуска, во вторую — для остановки.
Например, у меня дополнительно вызываются IISRESET /start
и IISRESET /stop
.
If you have a slow computer and want to save some memory or processing when you are not coding, this is for you
As a developer, once you finish setting up your development environment, you are going to have services running in the background. And depending on what kind of developer you are or the tools you have, you will have them taking up resources. That’s fine if your primary use is software development. But what if you also use it as a gaming machine or, say, this is the family computer? Would you need to have the SQL Server service running all the time?
I know I wouldn’t.
Since I got a new machine I decided to investigate on how to make it easier to start and stop services and I realized that doing it through PowerShell would help me. Let’s say that I would want to stop the SQL Server. I would use PowerShell in this way.
- Open PowerShell as administrator
- Get the service, just to make sure
Get-Service -Name 'MSSQLSERVER'
- Then stop it
Stop-Service 'MSSQLSERVER'
And the same for whenever I would start the service (Start-Service 'MSSQLSERVER'
).
There are 2 ways to get the name of the service in your machine:
- Via PowerShell
Get-Service
- Via Services
Win+R (Run), type services.msc, double click on the service and check the Service Name
But then I thought: How can I scale this? Because, see, I currently have 3 services I don’t want to have enabled all the time. Maybe next week I will have 10. How can I know?
I ended up creating 2 PowerShell scripts for that. Yes, I know, I needed only one and I could pass start or stop as parameter. But my PowerShell skills are very poor so I did what I could. Maybe I will come back to that later. Or maybe you can help, why not? 😉
The scripts are on my GitHub, more precisely in this repository: https://github.com/davidsonsousa/Start-Stop-Dev-Services
Great! It’s automated enough. But I needed more.
The next step was to create a shortcut for each script in the desktop. Since I need to execute the scripts as Administrator, I needed to create a very special kind of shortcut. Something like this:
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "C:\Foo\Bar\XXXX-services.ps1" -WindowsStyle Hidden
Notice the part in bold: This is where I have the path and name of the script.
Added some fancy icons to reminded me what is what:
Et voilà. Now I can start or stop my services whenever I want:
Important to note that the warning on the screenshot comes from RabbitMQ itself. Other services may have the same kind of message, which is fine.
- Copy and save the below script as MaintainService.ps1
- Open Powershell and navigate to the path where the script is saved
- Simply type part of the script name and then press tab for auto-complete
- You have to provide a service name and action (stop, start, restart) as part of the script parameters.
<# Author: Khoa Nguyen PS C:\Users\KoA\Dropbox\Code-Store\powershell> $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 5 1 15063 608 This is a quick script to start, stop and restart a service. The script will validate that the service exists and the required action parameter (stop, start, restart) is valid prior to executing the script. Sample Executions: PS C:\Users\KoA\Dropbox\Code-Store\powershell> .\MaintainService.ps1 Spooler Start Spooler is stopped, preparing to start... Spooler - Running PS C:\Users\KoA\Dropbox\Code-Store\powershell> .\MaintainService.ps1 Spooler Stop Spooler is running, preparing to stop... Spooler - Stopped PS C:\Users\KoA\Dropbox\Code-Store\powershell> .\MaintainService.ps1 FakeService Start FakeService not found PS C:\Users\KoA\Dropbox\Code-Store\powershell> .\MaintainService.ps1 FakeService Stop FakeService not found PS C:\Users\KoA\Dropbox\Code-Store\powershell> .\MaintainService.ps1 Spooler Start Spooler is stopped, preparing to start... Spooler - Running PS C:\Users\KoA\Dropbox\Code-Store\powershell> .\MaintainService.ps1 Spooler Restart Spooler is running, preparing to restart... Spooler - Running PS C:\Users\KoA\Dropbox\Code-Store\powershell> .\MaintainService.ps1 Spooler Stop Spooler is running, preparing to stop... Spooler - Stopped PS C:\Users\KoA\Dropbox\Code-Store\powershell> .\MaintainService.ps1 Spooler Restart Spooler is stopped, preparing to start... Spooler - Running PS C:\Users\KoA\Dropbox\Code-Store\powershell> .\MaintainService.ps1 Spooler Check Action parameter is missing or invalid! PS C:\Users\KoA\Dropbox\Code-Store\powershell> .\MaintainService.ps1 FakeService Check FakeService not found PS C:\Users\KoA\Dropbox\Code-Store\powershell> #> param ( [Parameter(Mandatory=$true)] [string] $ServiceName, [string] $Action ) #Checks if ServiceName exists and provides ServiceStatus function CheckMyService ($ServiceName) { if (Get-Service $ServiceName -ErrorAction SilentlyContinue) { $ServiceStatus = (Get-Service -Name $ServiceName).Status Write-Host $ServiceName "-" $ServiceStatus } else { Write-Host "$ServiceName not found" } } #Checks if service exists if (Get-Service $ServiceName -ErrorAction SilentlyContinue) { #Condition if user wants to stop a service if ($Action -eq 'Stop') { if ((Get-Service -Name $ServiceName).Status -eq 'Running') { Write-Host $ServiceName "is running, preparing to stop..." Get-Service -Name $ServiceName | Stop-Service -ErrorAction SilentlyContinue CheckMyService $ServiceName } elseif ((Get-Service -Name $ServiceName).Status -eq 'Stopped') { Write-Host $ServiceName "already stopped!" } else { Write-Host $ServiceName "-" $ServiceStatus } } #Condition if user wants to start a service elseif ($Action -eq 'Start') { if ((Get-Service -Name $ServiceName).Status -eq 'Running') { Write-Host $ServiceName "already running!" } elseif ((Get-Service -Name $ServiceName).Status -eq 'Stopped') { Write-Host $ServiceName "is stopped, preparing to start..." Get-Service -Name $ServiceName | Start-Service -ErrorAction SilentlyContinue CheckMyService $ServiceName } else { Write-Host $ServiceName "-" $ServiceStatus } } #Condition if user wants to restart a service elseif ($Action -eq 'Restart') { if ((Get-Service -Name $ServiceName).Status -eq 'Running') { Write-Host $ServiceName "is running, preparing to restart..." Get-Service -Name $ServiceName | Stop-Service -ErrorAction SilentlyContinue Get-Service -Name $ServiceName | Start-Service -ErrorAction SilentlyContinue CheckMyService $ServiceName } elseif ((Get-Service -Name $ServiceName).Status -eq 'Stopped') { Write-Host $ServiceName "is stopped, preparing to start..." Get-Service -Name $ServiceName | Start-Service -ErrorAction SilentlyContinue CheckMyService $ServiceName } } #Condition if action is anything other than stop, start, restart else { Write-Host "Action parameter is missing or invalid!" } } #Condition if provided ServiceName is invalid else { Write-Host "$ServiceName not found" }
|
Slom 0 / 0 / 0 Регистрация: 10.03.2021 Сообщений: 32 |
||||
Прошу подсказать с настройкой батника для проверки и запуска службы10.03.2021, 12:04. Показов 6060. Ответов 64 Метки нет (Все метки) Добрый день,прошу подсказать правильное написание батника.(код ниже) Тот,что есть срабатывает один раз,чекает состояние службы и если она остановлена ,то запускает ее.НО мне хотелось бы понять, как сделать чтоб батник постоянно чекал состояние службы и запускал ее в случае остановки (я только начал заниматься писанием batch-файла (3 дня читаю и пытаюсь сделать батник) ,может и видел правильные ответы,хотя скрупулезно искал данные,но может как в той шутке «смотрел в книгу,видел фигу»). Так же вопрос как создать конфигурационный файл для батника,если например нужно чекать раз в час и запускать. Заранее спасибо,надеюсь на ваши подсказки и советы,реально интересно заниматься этим,да и решил что пригодится ,но когда,кажется,все варианты посмотрел решил напрямую написать на форуме.
0 |
3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
|
10.03.2021, 12:15 |
|
Slom, добрый! Самым правильным будет настроить в планировщике запуск скрипта, который поднимет службу по событию (остановка службы). В Вашем случае можете текущий скрипт запихнуть так же в планировщик и в качестве триггера указать периодичность запуска (тот же час)
0 |
0 / 0 / 0 Регистрация: 10.03.2021 Сообщений: 32 |
|
10.03.2021, 13:21 [ТС] |
|
Karen87, да,это был запасной вариант,но думал это все одним батником делать,так как если у тебя несколько мест где это решение нужно использовать ,то везде нужно планировщик настраивать. Что не правильно написал? хотел бы чтоб успешно и ошибку выдавало при запуске,но если при этом служба раннинг
0 |
Karen87 3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
||||
10.03.2021, 14:51 |
||||
Сообщение от Slom мне хотелось бы понять, как сделать чтоб батник постоянно чекал состояние службы и запускал ее в случае остановки (я только начал заниматься писанием batch-файла (3 дня читаю и пытаюсь сделать батник) ,может и видел правильные ответы,хотя скрупулезно искал данные,но может как в той шутке «смотрел в книгу,видел фигу»). Так же вопрос как создать конфигурационный файл для батника,если например нужно чекать раз в час и запускать. Примерно так:
Можно и логирование прикрутить. Что хотите видеть в логе и в каком виде он должен быть?
0 |
0 / 0 / 0 Регистрация: 10.03.2021 Сообщений: 32 |
|
10.03.2021, 15:33 [ТС] |
|
Karen87, спасибо. Правильно я понимаю команда goto process ,по сути, оставляет батник работающим? 5 if not defined period ( 14 set /A waiting=!period!*3600 насчет логов: 10.03.2021; 15:38:55; служба остановлена. чтоб понимать когда стоп и старт службы был. Заранее благодарю.
0 |
3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
|
10.03.2021, 15:37 |
|
Сообщение от Slom Правильно я понимаю команда goto process ,по сути, оставляет батник работающим? Да, происходит переход в начало, то есть цикличная работа скрипта Сообщение от Slom второй вопрос: Если мне не нужна проверка каждый час ,а только тогда когда остановилась служба сразу ее запускать, то мне нужно заремить(rem) следующие строчки: А как Вы поймёте, что она остановилась? Вам же периодически нужно запрашивать её статус? Руками будете открывать скрипт? Сообщение от Slom насчет логов: Оповещать нужно в самом скрипте или делать вывод во внешний файл?
0 |
0 / 0 / 0 Регистрация: 10.03.2021 Сообщений: 32 |
|
10.03.2021, 15:42 [ТС] |
|
Сообщение от Karen87 Да, происходит переход в начало, то есть цикличная работа скрипта спасибо,за пояснение. Сообщение от Karen87 А как Вы поймёте, что она остановилась? Вам же периодически нужно запрашивать её статус? Руками будете открывать скрипт? Проверкой состояния службы ,или я не прав и так не совсем правильно? Сообщение от Karen87 Оповещать нужно в самом скрипте или делать вывод во внешний файл? Внешний лог файл
0 |
3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
|
10.03.2021, 15:46 |
|
Сообщение от Slom Проверкой состояния службы ,или я не прав и так не совсем правильно? Вы не совсем корректно доносите желаемое либо я не совсем корректно понимаю. Что хотите от скрипта получить? Периодическую проверку статуса служба при постоянно запущенном мониторинге или единоразово запустить скрипт и если он обнаружит, что служба остановлена запускать её? Сообщение от Slom Внешний лог файл Ок, реализую после уточнения предыдущего момента Добавлено через 15 секунд Сообщение от Slom спасибо,за пояснение. Пожалуйста
0 |
0 / 0 / 0 Регистрация: 10.03.2021 Сообщений: 32 |
|
10.03.2021, 16:04 [ТС] |
|
Сообщение от Karen87 Вы не совсем корректно доносите желаемое либо я не совсем корректно понимаю. Что хотите от скрипта получить? Периодическую проверку статуса служба при постоянно запущенном мониторинге или единоразово запустить скрипт и если он обнаружит, что служба остановлена запускать её? я понял,попробую пояснить. В Вашей версии батника , батник будет запускаться каждый час, если служба остановлена.(если я не правильно что-то понял, то прошу меня поправить)
0 |
3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
|
10.03.2021, 16:08 |
|
Сообщение от Slom В Вашей версии батника , батник будет запускаться каждый час, если служба остановлена.(если я не правильно что-то понял, то прошу меня поправить) Не совсем так. Батник проверяет службу и в зависимости от её статуса либо ничего не делает (если служба запущена), либо запускает её (если служба остановлена). Затем идёт ожидание в рамках временного интервала, который задаётся в начале скрипта. То есть, допустим, через час он снова проверяет статус службы и т.д.
0 |
0 / 0 / 0 Регистрация: 10.03.2021 Сообщений: 32 |
|
10.03.2021, 16:30 [ТС] |
|
Ручками,смысл скрипта теряется. Понял,я ошибочно думал, что можно это сделать как то онлайн ,что скрипт должен постоянно чекать службу,но по сути тут реализовано как Вы написали, только можно поставить каждые 5 минут например. Моя ошибка, не совсем осмыслил весь технический момент батника.
0 |
Karen87 3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
||||
10.03.2021, 16:36 |
||||
Сообщение было отмечено Slom как решение РешениеС логированием и промежутком в 5 минут:
1 |
Slom 0 / 0 / 0 Регистрация: 10.03.2021 Сообщений: 32 |
||||
10.03.2021, 17:02 [ТС] |
||||
Гигантское Вам спасибо за помощь! И за терпение! Немножко поправил батник (совместил Ваши версии):
один вопрос остался: лог не пишется почему то?с чем может быть это связано, так же как его спрятать после запуска?
0 |
3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
|
10.03.2021, 17:08 |
|
Сообщение от Slom один вопрос остался: лог не пишется почему то? Уверены? Должен формироваться файл log.txt рядом со скриптом Сообщение от Slom так же как его спрятать после запуска? Для этого допутилита нужна будет. Не смущает?
0 |
0 / 0 / 0 Регистрация: 10.03.2021 Сообщений: 32 |
|
10.03.2021, 17:38 [ТС] |
|
Сообщение от Karen87 Уверены? Должен формироваться файл log.txt рядом со скриптом перепроверил,все ок.сорри. Сообщение от Karen87 Для этого допутилита нужна будет. Не смущает? вроде нет. еще ,если позволите,вопрос.Для того ,чтоб после перезагрузки компьютера батник заработал лучше в автозагрузки его поставить или перевести батник в exe и так же в автозагрузки?
0 |
3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
|
10.03.2021, 17:52 |
|
Slom, в автозагрузку просто кидаете. Скрытое выполнение попозже допишу
0 |
Karen87 3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
||||||
10.03.2021, 18:52 |
||||||
Скрытое выполнение:
Примечание. Вложения
0 |
Karen87 3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
||||
10.03.2021, 19:28 |
||||
Я бы совместил 13 и 14 строчки в одну, кстати:
В этом случае событие запуска службы в лог будет добавлено только в случае её успешного запуска
0 |
0 / 0 / 0 Регистрация: 10.03.2021 Сообщений: 32 |
|
10.03.2021, 19:40 [ТС] |
|
Karen87, распаковал cmdow в C:\windows\system32, батник спрятался,но при этом не произошло запуска службы и не пишутся логи+не дает выставить количество минут
0 |
3166 / 1092 / 491 Регистрация: 29.05.2016 Сообщений: 4,537 |
|
10.03.2021, 19:43 |
|
А, точно… Я и забыл про счетчик, тогда давайте думать каким образом будете выставлять периодичность проверки?
0 |
Новые блоги и статьи
Все статьи Все блоги / |
||||
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025 Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . . |
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025 NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . . |
Реализация DI в PHP
Jason-Webb 13.05.2025 Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . . |
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025 Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . . |
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025 В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . . |
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025 Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . . |
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025 Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . . |
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025 ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . . |
Выполнение асинхронных задач в Python с asyncio
py-thonny 12.05.2025 Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . . |
Работа с gRPC сервисами на C#
UnmanagedCoder 12.05.2025 gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . . |
Наверх