|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Службы не запускаются стандартным скриптом VBS |
|
VBS/WSH/JS - Службы не запускаются стандартным скриптом VBS
|
Пользователь Сообщения: 130 |
Профиль | Отправить PM | Цитировать Здравствуйте всем!
Стоит задача запуска службы (в частности, хамач) из скрипта. Нашел в инете методы запуска, но чето никакой не срабатывает. Запример, такой скрипт (добавил только MsgBox для контроля найденных служб) '******************************************************************* ' Имя: StartStoppedServices.vbs ' Язык: VBScript ' Описание: Запуск остановленных служб '******************************************************************* Option Explicit ' Объявляем переменные Dim strComputer ' Имя компьютера Dim strNamespace ' Имя пространства имен Dim objWMIService ' Объект SWbemServices Dim colServices ' Коллекция экземпляров класса WMI Dim objService ' Элемент коллекции Dim strResult ' Результирующая строка Dim WshShell ' Объект WshShell Dim Res '********************** Начало ************************************* ' Присваиваем начальные значения переменным strComputer = "." strNamespace = "Root\CIMV2" ' Подключаемся к пространству имен WMI Set objWMIService = GetObject("WinMgmts:\\" & _ strComputer & "\" & strNamespace) ' Формируем коллекцию остановленных служб Set colServices = objWMIService.ExecQuery _ ("SELECT * FROM Win32_Service WHERE State = 'Stopped' and StartMode = " _ & "'Auto'") ' Создаем объект WshShell Set WshShell = WScript.CreateObject("WScript.Shell") ' Запрос на запуск служб Res = WshShell.Popup("Start all services?",0, _ "Работа со службами Windows",vbQuestion+vbYesNo) If Res=vbYes Then ' Запускаем каждую остановленную службу For Each objService In colServices MsgBox objService.Name objService.StartService() Next WScript.Echo "All services has been running" End If Sub StartOrStopService(Action, ServiceName) Dim qry MsgBox "Search services" Set wmi = GetObject("winmgmts://./root/cimv2") Wscript.Echo "Trying to " & Action & " service: " & ServiceName qry = "SELECT * FROM Win32_Service WHERE Name='" & ServiceName & "'" For Each s In wmi.ExecQuery(qry) MsgBox s MsgBox s.Name MsgBox ServiceNam Next End Sub Call StartOrStopService(start, "hamachi-2.exe") 'Пришлось взять в кавычки, т.к. скрипт ругается на -2 Call StartOrStopService(start, Hamachi2Svc) В итоге ни одна из этих служб никакими скриптами не запущена. Получается запустить только через net start Hamachi2Svc в CMD от администратора Чего не хватает для счастья решения задачи (кроме терпения и компетентности? |
|
Отправлено: 10:06, 29-09-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать For Each objService In colServices MsgBox objService.Name objService.StartService() Next WScript.Echo "All services has been running" списке? Цитата Той Серью:
Цитата Той Серью:
и используйте в каждом скрипте VBScript команду «Option Explicit», дабы не делать подобных ошибок. Пытаться указывать имя исполняемого файла в качестве имени службы («hamachi-2.exe») смысла нет. |
||
Отправлено: 11:04, 29-09-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 130
|
Профиль | Отправить PM | Цитировать Спасибо.
Только сейчас добрался до этой темы. Служба не запускается. В комментариях то, что сообщается по ходу выполнения скрипта Option Explicit Dim start , ServiceName, wmi, s Sub StartOrStopService(Action, ServiceName) Dim qry MsgBox "Search services" Set wmi = GetObject("winmgmts://./root/cimv2") Wscript.Echo "Trying to " & Action & " service: " & ServiceName 'Появляется сообщение Trying to start service: Hamachi2Svc Wscript.Echo qry ' Появляется пустое сообщение qry = "SELECT * FROM Win32_Service WHERE Name='" & ServiceName & "'" For Each s In wmi.ExecQuery(qry) 'Wscript.Echo s ' Если включить эту строку, то ошибка "несоответствие типов" MsgBox ServiceName 'Появляется сообщение Hamachi2Svc Next End Sub Call StartOrStopService(start, "Hamachi2Svc") |
Отправлено: 14:49, 04-10-2017 | #3 |
Пользователь Сообщения: 130
|
Профиль | Отправить PM | Цитировать Я думаю, что дело в правах на запуск. А запустить скрипт VBS от администратора как?
|
Отправлено: 15:39, 04-10-2017 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Той Серью:
Сдаётся мне, что этого: Вам будет достаточно для запуска службы, если имя «Hamachi2Svc» — правильное. |
||
Отправлено: 15:39, 04-10-2017 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Службы - Не запускаются службы. | iampuffik@vk | Microsoft Windows 7 | 6 | 12-08-2015 19:10 | |
Не запускаются службы windows 2000 server | Sayat | Microsoft Windows NT/2000/2003 | 7 | 25-03-2010 13:32 | |
Не запускаются vbs-сценарии с расшаренного каталога | ntvp | Microsoft Windows NT/2000/2003 | 4 | 04-09-2008 13:35 | |
Службы - Службы Windows не запускаются | Zion666 | Microsoft Windows 2000/XP | 7 | 21-09-2007 08:01 | |
Автоматически не запускаются службы | ZakharS | Microsoft Windows 2000/XP | 10 | 03-05-2006 13:15 |
|