Назад | Перейти на главную страницу

Скрипт VBS для проверки службы и ее статуса

Мне нужно проверить службу на машинах с Windows, и если служба не существует или находится в остановленном состоянии, машина должна запросить сообщение и автоматически перезапуститься через определенный период времени.

Я пробовал приведенный ниже, но он не работает. Может ли кто-нибудь помочь в этом.

Option Explicit

Const TITLE = "Service Check"
Const SERVICE = "DHCP"
Dim wmi
Dim svcs,svc

Set wmi = GetObject("winmgmts:\\.\root\cimv2")
Set svcs = wmi.ExecQuery("Select * from Win32_Service where Name = 'DHCP'")

If svcs.Count = 0 Then
  Call MsgBox(SERVICE & " service does not exist",vbCritical,Title)
  Call reboot(wmi)
Else
  For Each svc In svcs
    If svc.State <> "Running" Then
      Call MsgBox(SERVICE & " service is not running",vbCritical,Title)
      Call reboot(wmi)
    End If
next

End If

Sub reboot(ByRef wmi)
  Dim WSHShell
  Set WSHShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\WINDOWS\system32\shutdown.exe -r -t 300"
  Next
End Sub

Не уверен, что понимаю, почему вы хотите перезагрузиться. Кроме того, это всего лишь партия. Но:

sc query DHCP | findstr /c:"RUNNING"
if errorlevel 1 shutdown.exe -r -t 300

Хотя вместо этого вы можете подумать о перезапуске службы:

sc query DHCP | findstr /c:"RUNNING"
if errorlevel 1 net start DHCP