KapralBel
Platinum Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору # v1.0 # ===================== # ==================== Константы - начало # ===================== # Частота вызова скрипта # $Interval - частота вызова в единицах, заданных в $IntervalSelector # $IntervalSelector - временной интервал # h - часы # n - минуты # d - дни (default) # m - месяцы $iInterval=12 $strIntervalSelector='h' $EMailTo='Administrator@Company.com' $EmailFrom='Server@Company.Com' $SMTPHost='SMTP.Company.Com' $SMTPPort=25 # ===================== # ==================== Константы - конец # ===================== $dtNow=Date If ($strIntervalSelector -eq 'h') { $dtPrev=$dtNow.AddHours(-$iInterval) } ElseIf ($strIntervalSelector -eq 'n') { $dtPrev=$dtNow.AddMinutes(-$iInterval) } ElseIf ($strIntervalSelector -eq 'm') { $dtPrev=$dtNow.AddMonths(-$iInterval) } Else { $dtPrev=$dtNow.AddDays(-$iInterval) } $dtPrev=$dtPrev.AddMinutes(-2) $objEventLogs=Get-EventLog -list For($i=0;$i -lt $objEventLogs.Count;$i++) { $objEventLog=$objEventLogs.Get($i) $objEventLogMessages=Get-EventLog $objEventLog.Log $strLog=""+$objEventLog.Log+".htm" $iCountOfErr=0 For($j=0;$j -lt $objEventLogMessages.Count;$j++) { $objEventLogMessage=$objEventLogMessages[$j] If ($objEventLogMessage.TimeWritten -lt $dtPrev) {Break} If ($objEventLogMessage.get_EntryType().ToString() -eq 'Information') {continue} If ($objEventLogMessage.get_EntryType().ToString() -eq '0') {continue} $iCountOfErr=$iCountOfErr+1 $strMsg='Ошибки и предупреждения по журналу ['+$objEventLog.LogDisplayName+'] за период ['+$dtPrev.ToString('dd/MM/yyyy, hh:mm:ss')+" .. "+$dtNow.ToString('dd/MM/yyyy, hh:mm:ss')+']' If ($iCountOfErr -eq 1) { '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'>$strLog '<html>'>>$strLog '<head><title>'+$strMsg+'</title>'>>$strLog '</head>'>>$strLog '<h2 align="center">'+$strMsg+'</h2>'>>$strLog '<table width="100%" border="1" cellspacing="2" cellpadding="2" align="center">'>>$strLog '<tr><th>№</th><th>Тип</th><th>Дата</th><th>Время</th><th>Комп</th><th>Пользователь</th><th>Сообщение</th></tr>'>>$strLog } '<tr align="left">'>>$strLog '<td>'+$iCountOfErr+'</td>'>>$strLog '<td>'+$objEventLogMessage.get_EntryType().ToString()+'</td>'>>$strLog '<td>'+$objEventLogMessage.TimeWritten.ToString('dd/MM/yyyy')+'</td>'>>$strLog '<td>'+$objEventLogMessage.TimeWritten.ToString('hh:mm:ss')+'</td>'>>$strLog '<td>'+$objEventLogMessage.MachineName+' </td>'>>$strLog '<td>'+$objEventLogMessage.UserName+' </td>'>>$strLog '<td>'+$objEventLogMessage.Message+'</td>'>>$strLog '</tr>'>>$strLog } If ($iCountOfErr -gt 0) { '</table>'>>$strLog '</body>'>>$strLog '</html>'>>$strLog $Attach = new-object System.Net.Mail.Attachment($strLog) $SMTPClient = new-object System.Net.Mail.SMTPClient $Msg = new-object System.Net.Mail.MailMessage $Msg.Attachments.add($Attach) $Msg.To.Add($EMailTo) $Msg.From = $EMailFrom $Msg.Subject = $strMsg $Msg.Body = $strMsg $SMTPClient.Host = $SMTPHost $SMTPClient.Port = $SMTPPort $SMTPClient.Send($Msg) } } |