Перезапуск служб подстановки

21

В настоящее время мы настроили файл .BAT, в котором перечислены все службы для их запуска / остановки, например.

SC start SERVICE
SC start SERVICE

SC stop SERVICE
SC stop SERVICE

Мы постоянно добавляем новые сервисы, и их список постоянно растет, и обслуживать командный файл сложно.

Можно ли использовать WILDCARD типа «SC start SERVICE *» или что-то в этом роде?

Эдвард Тунг
источник
1
Какая версия windows?
Эндоро

Ответы:

17

Вы можете использовать wmicи подстановочный синтаксис SQL.

Из cmdконсоли:

wmic service where "name like 'SERVICE%'" call startservice

Из .batскрипта:

wmic service where "name like 'SERVICE%%'" call startservice

Доступные глаголы включают startservice, stopservice, pauseservice, resumeserviceи другие. Сделайте wmic service call /?для получения дополнительной информации.

Рохо
источник
1
Язык запросов называется WQL, BTW. Это подмножество SQL.
Боб
@ Боб - Ой. Я узнаю что-то новое каждый день. :>
Рохо
Просто хотел добавить еще одну вещь. Я столкнулся с ошибкой, когда имя службы не было распознано. Оказывается, у службы есть имя службы и отображаемое имя. Следует использовать имя службы, а не отображаемое имя. Вы можете найти имя сервиса с помощьюsc query
jdramer
13

Легко, с помощью Powershell:

Get-service SERVICE* | stop-service -force

Get-service SERVICE* | start-service
Gotxi
источник
Я проголосовал за этот, потому что он работает намного быстрее, чем wmic. На моей машине для получения списка услуг таким способом требуется около 2 миллисекунд. Это занимает около 13000 миллисекунд с использованием wmic.
arjabbar
как мне объединить эти две команды за один раз?
Раджа Анбажаган
0

если вы хотите команду One Line,

Вы можете использовать командлет Restart-Service , предварительно встроенный в powershell.

Чтобы использовать Restart-Service, просто вызовите командлет с именем службы:

Restart-Service mysql57

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

Restart-Service mysql57,apache

При желании добавьте параметр -displayname и укажите вместо него отображаемое имя службы (имя, отображаемое в оснастке «Службы»):

Restart-Service -displayname "Mysql 5.7 server"

Этот командлет также принимает сопоставление с подстановочными знаками. Чтобы перезапустить все службы, начинающиеся с «mysql»:

Restart-Service mysql*
Раджа Анбажаган
источник