KapralBel
Platinum Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору # v2.0 # ===================== # ==================== Константы - начало # ===================== # Частота вызова скрипта # $Interval - частота вызова в единицах, заданных в $IntervalSelector # $IntervalSelector - временной интервал # h - часы # n - минуты # d - дни (default) # m - месяцы $iInterval=1 $strIntervalSelector='d' $bLastTime='y' $EMailTo='Administrator@Firma.Ru' $EmailFrom='Server@Firma.Ru' $SMTPHost='Local.Mail.Firma.Ru' $SMTPPort=25 # ===================== # ==================== Константы - конец # ===================== For ($i=0;$i -lt $Args.Count;$i++) { If ($Args[$i] -eq '-Time') { $iInterval=$Args[$i+1] } If ($Args[$i] -eq '-S') { $strIntervalSelector=$Args[$i+1] } If ($Args[$i] -eq '-DateTime') { $bLastTime='n' } } $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) } if ($bLastTime -eq 'y') { $FileExist = Get-ChildItem -Path C:\EL.ini -Force -ErrorAction SilentlyContinue If ($FileExist.Exists) { $strTmp = Get-Content -Path C:\EL.ini -Force -ErrorAction SilentlyContinue $DtPrev = Get-Date -Date $strTmp } Else { $dtPrev=$dtPrev.AddMinutes(-2) } } Set-Content -Path C:\EL.ini $dtNow $objEventLogs=Get-EventLog -list $iCountErr=0 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++ $iCountErr++ $strMsg='Ошибки и предупреждения по журналу ['+$objEventLog.LogDisplayName+'] за период ['+$dtPrev.ToString('dd/MM/yyyy, HH:mm:ss')+" .. "+$dtNow.ToString('dd/MM/yyyy, HH:mm:ss')+']' $strMsg1='Ошибки и предупреждения по журналу ['+$objEventLog.LogDisplayName+']<br>за период ['+$dtPrev.ToString('dd/MM/yyyy, HH:mm:ss')+" .. "+$dtNow.ToString('dd/MM/yyyy, HH:mm:ss')+']' If ($iCountOfErr -eq 1) { Out-File -FilePath $strLog -Encoding default -InputObject ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">') Out-File -FilePath $strLog -Encoding default -Append -InputObject ('<html>') Out-File -FilePath $strLog -Encoding default -Append -InputObject ('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<head><title>'+$strMsg+'</title>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('</head>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<h2 align="center">'+$strMsg1+'</h2>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<table width="100%" border="1" cellspacing="2" cellpadding="2" align="center">') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<tr><th>№</th><th>Тип</th><th>Дата</th><th>Время</th><th>Комп</th><th>Пользователь</th><th>Сообщение</th></tr>') } Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<tr align="left">') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$iCountOfErr+'</td>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.get_EntryType().ToString()+'</td>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.TimeWritten.ToString('dd/MM/yyyy')+'</td>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.TimeWritten.ToString('HH:mm:ss')+'</td>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.MachineName+' </td>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.UserName+' </td>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.Message+'</td>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('</tr>') } If ($iCountOfErr -gt 0) { Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('</table>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('</body>') Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('</html>') $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) } } If ($iCountErr -eq 0) { $strMsg='За период ['+$dtPrev.ToString('dd/MM/yyyy, HH:mm:ss')+" .. "+$dtNow.ToString('dd/MM/yyyy, HH:mm:ss')+'] ошибок и предупреждений в журнале собыйтий нет' $SMTPClient = new-object System.Net.Mail.SMTPClient $Msg = new-object System.Net.Mail.MailMessage $Msg.To.Add($EMailTo) $Msg.From = $EMailFrom $Msg.Subject = $strMsg $Msg.Body = $strMsg $SMTPClient.Host = $SMTPHost $SMTPClient.Port = $SMTPPort $SMTPClient.Send($Msg) } | Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:24 16-10-2006 | Исправлено: KapralBel, 13:27 16-10-2006 |
|