Как-то раз мне понадобилось запустить из vbs-скрипта службу с параметром. Долго искал как это сделать, нашел только один способ. Есть такая полезная штука – Windows Server 2003 Resource Kit Tools. Это набор различных утилит для администрирования. В том числе там есть тула SC.exe.
SC представляет собой программу командной строки, используемую для связи диспетчера управления службами со службами.
Так вот, это тула много чего умеет делать со службами:
- Запускать/останавливать;
- Получать состояние службы;
- Удалять службы;
- Получать зависимости службы и другие параметры.
Синтаксис у нее следующий:
sc <сервер> [команда] [имя службы] <параметр1> <параметр2>...
Чтобы запустить службу с параметром, нужно выполнить следующую команду:
sc.exe start MySrv MyParam
Где MySrv – имя службы (которое не Display Name, а Service Name), MyParam – параметр службы.
Собственно, для запуска из скрипта можно использовать следующий код:
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim objSc
Set objSc = WshShell.Exec("sc.exe start MySrv MyParam")
Do While True
If objSc.Status = 1 Then
Exit Do
Else
WScript.Sleep 1000
End If
Loop
If objSc.ExitCode <> 0 Then
Wscript.Echo "Cannot start service 'MyService'" & _
"sc.exe exit code = " & objSc.ExitCode
Wscript.Quit 2
End If
PS. В этом же Resource Kit есть утилита Sleep.exe, которая просто умеет «засыпать». Ее полезно использовать в bat-файлах, если нужно приостановить выполнение команд.