Той Серью
29-09-2017, 10:06
Здравствуйте всем!
Стоит задача запуска службы (в частности, хамач) из скрипта.
Нашел в инете методы запуска, но чето никакой не срабатывает.
Запример, такой скрипт (добавил только 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 от администратора
Чего не хватает для счастья решения задачи (кроме терпения и компетентности?
Стоит задача запуска службы (в частности, хамач) из скрипта.
Нашел в инете методы запуска, но чето никакой не срабатывает.
Запример, такой скрипт (добавил только 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 от администратора
Чего не хватает для счастья решения задачи (кроме терпения и компетентности?