Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » PowerShell

Модерирует : KLASS, IFkO

KLASS (06-03-2018 00:43): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

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+'&nbsp;</td>')
          Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.UserName+'&nbsp;</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
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » PowerShell
KLASS (06-03-2018 00:43): Объединение тем по сценариям: Сценарии Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru