Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Службы не запускаются стандартным скриптом VBS

Ответить
Настройки темы
VBS/WSH/JS - Службы не запускаются стандартным скриптом VBS

Пользователь


Сообщения: 130
Благодарности: 0

Профиль | Отправить 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
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
  For Each objService In colServices
  MsgBox  objService.Name
    objService.StartService()
  Next
  WScript.Echo "All services has been running"
Неназванный автор забыл самую малость — проверять значение, возвращаемое методом «.StartService()», и только на основании этого делать какие-то выводы об успешности запуска каждой службы. Нет, он смело пишет: «All services has been running». Теперь к Вашей службе: она хоть перечисляется в отобранном по:
Код: Выделить весь код
WHERE State = 'Stopped' and StartMode = 'Auto'"
списке?

Цитата Той Серью:
Этот способ тоже не работает »
Цитата Той Серью:
'Пришлось взять в кавычки, т.к. скрипт ругается на -2 »
Возьмите в кавычки ещё и «Hamachi2Svc» в:
Код: Выделить весь код
Call StartOrStopService(start, "Hamachi2Svc")
и используйте в каждом скрипте VBScript команду «Option Explicit», дабы не делать подобных ошибок. Пытаться указывать имя исполняемого файла в качестве имени службы («hamachi-2.exe») смысла нет.

Отправлено: 11:04, 29-09-2017 | #2



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

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


Пользователь


Сообщения: 130
Благодарности: 0

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я думаю, что дело в правах на запуск. А запустить скрипт VBS от администратора как?

Отправлено: 15:39, 04-10-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Той Серью:
В чем дело, не пойму. »
В том, что Вы передаёте процедуре StartOrStopService() пустое значение в аргументе Action.

Сдаётся мне, что этого:
Код: Выделить весь код
WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").Get("Win32_Service.Name='Hamachi2Svc'").StartService
Вам будет достаточно для запуска службы, если имя «Hamachi2Svc» — правильное.

Отправлено: 15:39, 04-10-2017 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Службы не запускаются стандартным скриптом VBS

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Службы - Не запускаются службы. 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




 
Переход