
- •Утиліти і засоби для роботи з wmi
- •Підключення до wmi
- •Робота з об'єктами sWbemServices і sWbemObject
- •Як дістатися до конкретного об'єкту: мова запитів wql
- •Робота з подіями
- •6.1 Архітектура роботи з подіями в wmi
- •6.2 Типи подій
- •6.3 Запит, реєструючий подію
- •Класи wmi
- •7.1 Класи wmi для роботи з устаткуванням
- •7.2 Класи для роботи з операційною системою
- •Робота із службами
- •Робота з файлами і каталогами
- •Робота з журналом подій Windows
- •Об'єкт операційної системи - Win32_OperatingSystem
- •Робота з Win32_Process : запуск, завершення роботи, моніторинг процесів на комп'ютері
- •Інші класи для роботи з операційною системою
- •7.3 Класи для роботи зі встановленими продуктами
- •Практичне завдання:
Практичне завдання:
Набрати та відлагодити всі наведені в теоретичних відомостях лістинги.
Робота з журналом подій Windows
1) скопіюйте до себе з каталогу Templates на компакт-диску базу даних EventLog.mdb в кореневий каталог диска C : і зніміть з неї прапорець "Тільки для читання"
2) проглянете єдину таблицю в цій базі - Events
3) напишіть скрипт EventLogProcessing.vbs, який би :
переносив би записи з журналу подій System на вашому локальному комп'ютері в цю базу даних (треба тільки поля ComputerName, EventType, EventCode, Message і TimeWritten);
після закінчення перенесення очищав би журнал подій System.
Відповідь до вправи 1. Робота з журналом подій Windows
Код скрипта EventLogProcessing.vbs може бути таким:
Option Explicit
Dim cn, rs, oLocator, oSvc, oColEvents, oColEventLog, Item, oLogFile
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\EventLog.mdb"
cn.Open
Set rs = CreateObject("ADODB.Recordset")
rs.CursorType = 3
rs.LockType = 3
rs.Open "Events", cn
Set oLocator = CreateObject("wbemScripting.Swbemlocator")
Set oSvc = oLocator.ConnectServer()
Set oColEvents = oSvc.ExecQuery _
("Select * from Win32_NTLogEvent WHERE Logfile = 'System'")
For Each Item In oColEvents
rs.AddNew
rs("ComputerName") = Item.ComputerName
rs("EventType") = Item.Type
rs("EventCode") = Item.EventCode
rs("Message") = Item.Message
rs("TimeWritten") = Item.TimeWritten
rs.Update
Next
Set oColEventLog = oSvc.ExecQuery _
("Select * from Win32_NTEventLogFile WHERE LogFileName = 'System'")
For Each oLogFile In oColEventLog
oLogFile.ClearEventLog
Next
WScript.Echo "Done"
Напишіть скрипт ServiceMonitoring.vbs, який би раз в десять секнуд відстежував би зміни в стані служб Windows на вашому комп'ютері і у разі зміни статусу служб (наприклад, яка-небудь служба була зупинена), виводив би в стандартну консоль виводу інформацію про ім'я цієї служби і її поточний стан.
Відповідь до вправи 2. Робота з подіями операційної системи
Код скрипта ServiceMonitoring.vbs може виглядати так:
Dim oLocator, oSvc, oColServices, oService
Set oLocator = CreateObject("wbemScripting.Swbemlocator")
Set oSvc = oLocator.ConnectServer()
Set oColServices = oSvc.ExecNotificationQuery _
("Select * from __instancemodificationevent " _
& "within 10 where TargetInstance isa 'Win32_Service'")
Do
Set oService = oColServices.NextEvent
WScript.Echo oService.TargetInstance.Name & vbTab & vbTab & _ oService.TargetInstance.State
Loop