Как ловить ошибки WMI - PullRequest
       25

Как ловить ошибки WMI

1 голос
/ 24 марта 2011

Я хочу использовать wmi, чтобы остановить службу, если она запущена.Ниже приведен код в VBScript.

Проблема в том, что команды GetObject, startService и ExecuteQuery могут получать ошибки по разным причинам.Например, после выполнения команды «stopService» состояние службы может стать «остановленным», а не «остановленным», и сценарий там висит некоторое время.Иногда возвращались сообщения об ошибках типа «RPC недоступен».Кажется, нет механизма ловли исключений, встроенного в VBScript.Большинство примеров, которые я видел онлайн, никогда не рассматривало такую ​​ситуацию.Кто-нибудь знает, что есть хороший способ отловить такие ошибки и заставить эту команду (примечание: не сам сервис) прервать работу?

 Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colServiceList = objWMIService.ExecQuery ("Select * from Win32_Service where Name = '" & strService & "'")

For Each objService in colServiceList

If objService.State = "Running" Then

strObjService.StopService
Wscript.Sleep 2000

myColServiceList = myObjWMIService.ExecQuery _
        ("Select * from Win32_Service where Name = '" & strService & "'")

    For each myObjService In myColServiceList
        objState = myObjService.State

    End If
End If

[/ code]

1 Ответ

3 голосов
/ 24 марта 2011

Вы должны прочитать эту статью от Microsoft To Err Is VBScript, по этой ссылке вы найдете все, что вам нужно знать об обработке ошибок с использованием WMI и VbScript.

...