Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '*******************************************************************
- ' Имя: SyncMonitor.vbs
- ' Язык: VBScript
- ' Описание: Подписка на события WMI в синхронном режиме
- '*******************************************************************
- Option Explicit
- ' Объявляем переменные
- Dim strComputer ' Имя компьютера
- Dim strNamespace ' Имя пространства имен WMI
- Dim objService ' ОбъектSWbemServices
- Dim objEventSource ' ОбъектSWbemEventSource
- Dim objEvent ' Объект SWbemObject
- Dim strResult ' Результат запроса
- ' Константа для задания режима открытия файла
- Const ForAppend = 8
- ' Функция для записи информации в файл
- Sub TextOut (Text, File)
- ' Объявляем переменные
- Dim FSO, FOut
- ' СоздаемобъектFileSystemObject
- Set FSO=WScript.CreateObject("Scripting.FileSystemObject")
- ' Открываем выходной файл для записи
- Set FOut = FSO.OpenTextFile (File,ForAppend,true)
- ' Записываем текстовую строку в файл
- FOut.WriteLine Text
- ' Закрываем выходной файл
- FOut.Close
- End Sub
- '**********************
- Начало
- *************************************
- ' Присваиваем начальные значения переменным
- strComputer = "."
- strNamespace = "Root\CIMV2"
- ' Подключаемся к пространству имен WMI
- Set objService = GetObject("WinMgmts:\\" & _strComputer & "\" & strNamespace)
- ' Выполняем запрос для подписки на извещения о событиях WMI
- Set objEventSource = objService.ExecNotificationQuery _("SELECT * FROM __InstanceModificationEvent " & _"WITHIN 5 WHERE TargetInstance ISA 'Win32_Service'")
- ' Выводим сообщение о запуске сканера
- Wscript.Echo " Запущен сканер изменения состояния служб"
- ' Записываем в переменную objEvent следующее событие
- Set objEvent = objEventSource.NextEvent
- ' Пр
- оверяем, изменилось ли состояние службы
- If objEvent.TargetInstance.State <> objEvent.PreviousInstance.State Then
- ' Формирум строку для вывода
- strResult = Date & " " & Time & vbCrLf &_"Служба: " & objEvent.TargetInstance.DisplayName &_"." & vbCrLf &_"Текущее состояние: " & objEvent.TargetInstance.State &_"." & vbCrLf &_"Предыдущее состояние: " & objEvent.PreviousInstance.State &_"." & vbCrLf
- ' Выводим результат на экран
- WScript.Echo strResult
- ' Выводим результат в текстовый файл
- TextOut "*****************************" & vbCrLf & strResult &_"*****************************", "D\student\LogService.txt"
- End If
- '************************* Конец ***********************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement