Добрый день коллеги. Есть очень жиотрепещющий вопрос. Каким образом можно сделать так чтобы тема письма генерилась в результате определенногодействия.
Например произощло событие '624-Создание учетной записи пользователя
Т.О. тема письма должна быть Создание учетной записи пользователя,если это событие
644-блокировка учетной записи
Все интересующие EventID занесены в скрипт
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
'********************************************************************
'*
'* File: MonitoringLog.vbs
'*
'********************************************************************
'Адреса E-Mail через ";" куда отправляются изменения в журнале
Const SendTo="vitaliy@mail.ru;"
'Этот адрес добавляется к предыдущему для посыслки уведомления
Const SendToIllegalProgram=""
'Тема сообщения о системыхсобытиях отправляемых по E-Mail
Const SendSub="Изменение учетных данных."
'Типы записей журнала
TError="ошибка"
TWarning="предупреждение"
TInformation="уведомления"
TAuditSuccess="аудит успехов"
TAuditFailure="аудит отказов"
'TError="error"
'TWarning="warning"
'TInformation="information"
'TAuditSuccess="audit success"
'TAuditFailure="audit failure"
TextNameProc="имя файла образа:"+vbTab
'**********************
ON ERROR RESUME NEXT
SendText=""
EOL = Chr(10) & Chr(13)
Set WshNetwork=CreateObject("WScript.Network")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate, (Security)}!\\" _
& WshNetwork.ComputerName & "\root\cimv2")
'*Регистрируем на отслеживание всех событий
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("Select * from __instancecreationevent where TargetInstance isa 'Win32_NTLogEvent'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
'Расматриваем по коду события
Select Case objLatestEvent.TargetInstance.EventCode
'Управление учетными записями
Case 624 , 626 , 629 , 630 , 631 , 634
'624-Созданиеучетки
'626-Изменение учетныхданных
'629-Удаление
'630.....
'631.....
SendText="Logfile=" & objLatestEvent.TargetInstance.Logfile & EOL _
& "Type=" & objLatestEvent.TargetInstance.Type & EOL _
& "Category=" & objLatestEvent.TargetInstance.CategoryString & EOL _
& "SourceName=" & objLatestEvent.TargetInstance.SourceName & EOL _
& "EventCode=" & objLatestEvent.TargetInstance.EventCode & EOL _
& "TimeGenerated=" & WMIDateStringToDate(objLatestEvent.TargetInstance.TimeGenerated) & EOL _
& "ComputerName=" & objLatestEvent.TargetInstance.ComputerName & EOL _
& "User=" & objLatestEvent.TargetInstance.User & EOL _
& "Message=" & objLatestEvent.TargetInstance.Message
'Отправим сообщение по почте
Call SendEMail(SendTo,SendSub & " EventCode=" & objLatestEvent.TargetInstance.EventCode,SendText)
'И через "net send"
Call NetMessage(NetTo,"Управление учетными записями. EventCode=" & objLatestEvent.TargetInstance.EventCode)
Case Else
'А теперь по типу
Select Case objLatestEvent.TargetInstance.Type
'Ошибка или предупреждение
Case TError,TWarning
SendText="Logfile=" & objLatestEvent.TargetInstance.Logfile & EOL _
& "Type=" & objLatestEvent.TargetInstance.Type & EOL _
& "Category=" & objLatestEvent.TargetInstance.CategoryString & EOL _
& "SourceName=" & objLatestEvent.TargetInstance.SourceName & EOL _
& "EventCode=" & objLatestEvent.TargetInstance.EventCode & EOL _
& "TimeGenerated=" & WMIDateStringToDate(objLatestEvent.TargetInstance.TimeGenerated) & EOL _
& "ComputerName=" & objLatestEvent.TargetInstance.ComputerName & EOL _
& "User=" & objLatestEvent.TargetInstance.User & EOL _
& "Message=" & objLatestEvent.TargetInstance.Message
'Отправим сообщение по почте
Call SendEMail(SendTo,SendSub & " EventCode=" & objLatestEvent.TargetInstance.EventCode,SendText)
'И через "net send"
Call NetMessage(NetTo,"Монитор событий зарегистрировал изменения в журнале. EventCode=" & objLatestEvent.TargetInstance.EventCode)
End Select
End Select
Set objLatestEvent = Nothing
Loop
'********************************************************************
'*
'* Function WMIDateStringToDate
'*
'* Purpose: Преобразует дату из формата WMI (Universal Time Coordinate)
'* в строку
'*
'* Input: dtmInstallDate Дата в формате WMI
'*
'* Output: Дата в строковом виде
'*
'********************************************************************
Function WMIDateStringToDate(dtmInstallDate)
WMIDateStringToDate = CDate(Mid(dtmInstallDate, 5, 2) & "/" & _
Mid(dtmInstallDate, 7, 2) & "/" & Left(dtmInstallDate, 4) _
& " " & Mid (dtmInstallDate, 9, 2) & ":" & _
Mid(dtmInstallDate, 11, 2) & ":" & Mid(dtmInstallDate, _
13, 2))
End Function
'********************************************************************
'*
'* Sub SendEMail
'*
'* Purpose: Отправляет почтовое сообщение используя профиль Outlook Express
'*
'* Input: sTo Адреса получатели через ;
'* sSub Тема письма
'* sText Текс письма
'*
'* Output:
'*
'********************************************************************
Sub SendEMail (sTo,sSub,sText)
' Declare and create an instance of CDO.Message
Dim iMsg
Set iMsg = CreateObject("CDO.Message")
' Using the CDO instace
With iMsg
.To = sTo
.Subject = sSub
.TextBody = sText
.Send
End With
Set iMsg = Nothing
End Sub
Бесполезно рассказывать о высоком моральном облике коллектива человеку, имеющему доступ к логам прокси-сервера этого коллектива…