Перейти к содержимому


Фото
- - - - -

Vbscript - мониторинг служб


  • Please log in to reply
1 ответов в теме

#1 elnone

elnone

    Newbie

  • Posters
  • 31 Сообщений:

Отправлено 15 Август 2009 - 08:29

Всем привет!

Возникла необходимость отслеживать в каком состоянии сервисы у машин в домене и по возможности их стартовать или останавливать. И получать по мейл отбойку, у кого "не в том" состоянии служба или по неудачи.
Бывают часто ситуации, когда через GPO - MSI пакет агента устанавливается повторно на уже с установленным drwcs ручками компьютер, и тогда агенг и все вместе с ним взятое сносится. Возможность "сказать" MSI пакету (или сказать drwinst.exe) не устанавливайся, так как ты уже установлен (то есть проверяться) не нашел и накатал Logon скрипт, который стартует или останавливает сервисы, изменяет в нужное состояние, допустим из Disabled в Automatic (shadow любит так делать с Automatic Updates) и отправляет мейл с логом. Но самое главное, получать мейл от компа, у которого нет установленного DrWeb'а (проскользнул). За основу взял скрипт от Rob Dunn - Windows Update Agent force script, email results - http://www.vbshf.com/vbshf/forum/forums/th...199&start=1
Есть одна проблема - как передать двойные кавычки в параметры Logon скрипта... но можно и без этого, просто внеся свои значения в сам файл.
Возможно кому то пригодиться...

Прикрепленные файлы:



#2 elnone

elnone

    Newbie

  • Posters
  • 31 Сообщений:

Отправлено 16 Август 2009 - 12:54

Покрутив скрипт в реальной сети, я упустил момент, что у пользователей проапгрейдированных с версии 4.44 до 5 наименовение сервиса другое (без пробела) "Dr.Web® Scanning Engine", далее на разных языковых версиях форточек привязка к DisplayName не подходит.
Тогда следует делать выборку по Name сервиса:
'On Error Resume Next

Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("PROCESS")
Set ws = wscript.CreateObject("Scripting.FileSystemObject")

strComputer = WshShell.ExpandEnvironmentStrings("%Computername%")

Set objWMISvc = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objCol = objWMISvc.ExecQuery("select * from Win32_Service")
If objCol.Count > 0 Then
For Each objItem In objCol
Wscript.echo "Service: " & objItem.Name & " - " & objItem.DisplayName & " - " & objItem.State
Next
End if

То есть ищем strSvc и ставим
strSvc = "drwagntd, DrWebEngine, wuauserv"

а в Set objCol заменяем where DisplayName на Name
Set objCol = objWMISvc.ExecQuery("select * from Win32_Service where Name='" & strSvc & "'")


Читают тему: 0

0 пользователей, 0 гостей, 0 скрытых