Как-то раз мне понадобилось запустить из 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-файлах, если нужно приостановить выполнение команд.

