Утилита sc (я ее уже рассматривал частично в статье Получение списка служб средствами командной строки и сервера Windows Script Host), из нее нам понадобятся только некоторые команды, а именно:
Sc start Имя_Службы –запуск службы из командной строки Sc pause Имя_Службы – приостановка службы Windows из командной строки Sc continue Имя_Службы – возобновление службы из командной строки Sc stop Имя_Службы – остановка службы из командной строки
Параметр Имя_Службы определяет имя сервиса. Так же стоит учитывать, что у сервиса могут быть зависимые от него службы.
Однако, тут есть один подводный камень – тип запуска, так если служба полностью остановлена, то вам сначала нужно изменить тип запуска, а уже потом запускать службу Windows через командную строку. Для изменения типа запуска, можно использовать следующую команду:
Sc config Имя_Службы start= флаг
Обязательно после знака равенства ставьте пробел, иначе произойдет ошибка. Флаг может принимать три значения:
Auto – автоматический запуск при старте системы Demand – ручной запуск Disabled – отключение
Что бы запустить или остановить службу из командной строки, есть еще две утилиты:
net stop Имя_Службы net start Имя_Службы
Скажу честно, в свое время на старом сайте я уже писал подобную статью, вник во все подробности данной темы, так сказать, но, материалы пришлось удалить, так как тот ресурс я закинул, а по правилам поисковой системы Яндекс не желательно, что бы два сайта одно владельца конкурировали в выдаче. Да и сама тема довольно скучная – так, для любителя. Поэтому, основной акцент данной публикации будет сделан на использование WMI для управления сервисами Windows и компонент WSO для реализации графического интерфейса. Ну а сейчас, еще немного лирики…
Не забывайте, что управлять службами Windows можно из Панели Управления, папка Администрирование, ярлык Службы.
Вообще, данную публикацию я бы физически не смог написать, если бы не два момента:
Как только я начинал вести блог, то для реализации оконного интерфейса использовал программу LangMF, о нее довольно широкие возможности, но, как только я познакомился с компонентом WSO, то она мне больше не понадобилась.
Как то мне взбрело в голову написать файловый менеджер с помощью языка jscript, с последующим переводом кода в область vbscript. Я накинул начальные штрихи, но … что то у меня не получалось, за советом я пошел на форум, и там мне все грамотно пояснили, и я понял … что ничего не понял. После того момента мне пришлось многое переучить и переосмыслить, как результат, я удалил практически все статьи на блоге и написал новые.
Хорошо, теперь настало время приступить к программированию, я сначала покажу пример на языке jscript. Далее дам его описанию и информативные картинки, ну а потом уже пример на языке vbscript.
В сценарии мы создали два массива def_column и data_array , давайте рассмотрим их:
def_columns – данный массив хранит в себе объекты, которые будут отвечать за обработку каждой колонки. Реализация массива объектов для языка vbscript (прочитайте “Урок 9 по VBScript: Массивы”) и jscript (прочитайте “ Урок 5 по JScript: Работа с массивами ”) разная, поэтому давайте разберем все по отдельности:
def_columns = [<бъект_1>,<объект_2>,…,<объект_n>] – как видим, через запятую в фигурных скобках мы должны указать объекты, но не имена, а весь код. Каждый объект содержит информацию об имени колонки, ее размер, тип данных и функцию, которая отвечает за доступ к выбранному элементу в списке.
Реализация на vbscript
def_columns = Array(объект_1, объект_2, …, объект_n) – на первый взгляд все просто, нам только нужно прописать через переменную имена объектов (классов), но есть одно но. Сперва нам пришлось создать эти классы, и так как колонок пять, то и классов должно быть пять, как создавать классы, почитайте в статье “ Урок 8 по VBScript: Объекты и классы ”. Прямо перед формированием массива мы создали ссылки на классы, иначе никак.
data_array – данный массив как и предыдущий, состоит из объектов каждый объект хранит в себе информацию о выбранной службе (имя, статус, псевдоним и так далее). Каждый раз при попытке запустить службу из командной строки, остановить службу из командной строки, поставить на паузу или возобновить, или при попытке обработать выбранную службу Windows средствами WMI, будет происходить обращение к данному массиву по индексу и получение данных из текущего объекта. В большинстве случаев нам понадобится только одно свойство Name, всего объекты хранят пять свойств (число колонок).
Сам массив является динамическим, в примере на jscript добавление данных происходит с помощью функции push. В vbscript такой возможности нет, поэтому мне пришлось сначала определить длину коллекции со службами, и уже потом с помощью ключевого слова ReDim задать длину массива.
Все функции я затрагивать не буду, так как получиться целая петиция, да и меня самого, если честно такой огромный код отпугивает. Мы рассмотрим только управляющие функции, те, которые производят запуск служб из командной строки, остановка служб через командную строку, возобновление, приостановка, перевод в автоматический режим, перевод в ручной режит и отключение службы Windows.
function ServiceRun – отвечает за запуск. В теле функции сначало происходит проверка, выбрал ли пользователь служб (то есть, нажал на элемент списка), если нет – выводится предупреждающее сообщение, иначе, происходит вызов функции ServiceDialog() , данная функция выводит диалоговое окно, если вы нажнете ОК, то произойдет процесс выполнения заданной операции над служно, если нет – ничего не произойдет. Это необходимо, иначе можно наломать дров нечаянными кликами. Далее происходит процесс работы с WMI (подробней читайте в рубрике “ Windows Management Instrumentation”). Фактически, происходит подключение класса Win32_Service с фильтром по имени выбранной службы и отправка запроса. После происходит вывод кода возврата, если он равен нолю, значит все прошло успешно, иначе, что то не так. Я не стал тут приводить все коды, можете посмотреть их на странице Майкросовт.
function ServiceStop, function ServicePause, ServiceContinue – функции, отвечающие за остановку, приостановку и возобновление сервиса Windows. Код практически тот же, что у предыдущей функции, только меняется имя метода.
function ServiceAuto – данная функция отвечает за перевод службы в автоматический режим. Я не стал использовать функционал WMI, а решил прибегнуть к утилитам командной строки. За весь процесс отвечает следующая сточка:
Тут происходит запуск командной строки с параметром “/c”, то есть, она автоматически завершится после выполнения команды sc config. Однако, данные будут записываться во временный файл. После выполнения команды происходит открытие файла, что бы пользователь увидел, успешной была команда или нет.
ServiceManual() и ServiceDisable() – функции перевода службы Windows в ручной режим и ее отключения, код практически тот же, меняется только команда.
Ладно, вот код на vbscript:
Смотрите, если у вас возникнут вопросы по коду, то обязательно напишите в комментариях. Я сами примеры тестировал на системе Windows XP Sp3, и как они себя поведут на другой платформе не знаю. Не забывайте, что за создание оконного интерфейса отвечает компонент WindowSystemObject. При желании вы можете поэкспериментировать над кодом так, что бы можно было не средствами WMI, а через командную строку запустить, остановить, приостановить и возобновить службы Windows. И еще, а конечно не мастер, так что возможно с точки зрения профессионала код написан коряво.
Спасибо за внимание. Автор блога Владимир Баталий
Скрипт запускающий службы в определенном порядке
Запускающий скрипт. Особенность работы Работаю с программой Modem Manager. Нужно реализовать в собственном приложение некоторые функции.
Как создать скрипт запускающий ярлык с параметром Подскажите пожалуйста, как создать скрипт который будет открывать ярлык с параметром?
Написать скрипт Bash, компилирующий и запускающий программу Задача: Написать скрипт, компилирующий и запускающий программу (имя исходного файла и exe-файла.
Скрипт, запускающий тулзы разных версий. Кроссплатформенность Вопросы возникли в следующем: 1) Часто возникает необходимость создать скрипт (например, под.
это что за новый зверь, ну-ка поподробнее с этого места
Добавлено через 1 минуту эти сторонние службы привязаны к новым процессам? Может о процессах и разговор — ничего не путаете?
Ну предположим есть 3 службы:
1. AdobeARMservice 2. AdobeUpdateService 3. SAMSUNG Mobile Connectivity Service
Вот мне нужен скрипт, который будет запускать эти службы в той последовательности, в которой они расположены в списке
Решение
то согласно специфики bat они так и запустятся
Добавлено через 1 минуту и опять же, без необходимого ПО не запустится и служба.
Тематические курсы и обучение профессиям онлайн Профессия Cпециалист по кибербезопасности (Skillbox) DevOps-инженер (Нетология) Профессия DevOps-инженер PRO (Skillbox)
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Требуется написать скрипт, запускающий приложение с CD-диска Требуется написать скрипт запускающий приложение с CD-диска, независимо оттого откуда он был.
Как создать скрипт, запускающий определённую процедуру по закрытию браузера? Помогите решить такую задачу: В win2008server с ролью терминального сервера пользователь.
Не срабатывает скрипт на определённом ПК Здравствуйте! Купил новый ноутбук для работы и развлечений и всё хорошо, но не срабатывает.
Скрипт на перезагрузку службы Народ, помогите написать скрипт на перезагрузку службы приложения! конкретнее: имеется приложение.