Регулярно проверяйте журналы на наличие ошибок, но не допускайте отправки повторяющихся уведомлений. - PullRequest
0 голосов
/ 17 сентября 2018

Я написал скрипт для проверки перечисленных ниже strings[$string] в своем журнале и отправил письмо с соответствующим приложением журналов, если один из этих шаблонов соответствует этим журналам.

Этот скрипт работает, как и ожидалось, но теперь моя задача - проверить, как исключить строки, которые уже были предупреждены. Например:

Мой файл журнала перезаписывается каждые 4 минуты или иногда быстрее, чем 4 минуты, в зависимости от трафика вызовов. Поскольку мой сценарий выполняется каждые 3 минуты, иногда я получаю множество предупреждений об одной и той же ошибке.

Итак, как проверить, является ли эта ошибка новой или уже предупреждена, прежде чем отправить мне письмо? Я новичок в скриптах Powershell. Заранее спасибо!

Сценарий:

$string='(Unable to connect to the remote server|A serious|Socket error - cannot connect|Fetch returned HTTP error|"Open error|URL=http")'
$path1="D:\Program Files\AVP\*.txt"
$Target = "D:\Program Files\AVP\Avp_Logs.zip"

if (Select-String -Path $path1 -pattern $string)
{
    set-alias sz "C:\Program Files\7-Zip\7z.exe"
    $count=(Select-String -Path $path1 -pattern $string).length
    $string1=Select-String -Path $path1 -pattern $string
    sz a  $Target $Source -ssw ;
    $body1=("The Error:-"+$string+": "+"Error Count"+" "+$count+"::")
    $string1 | ConvertTo-Html  | Out-File 'E:\PowershellScripts\test.html'
    $body=""
    $body=$body1+$body2
    Send-MailMessage -From "alert@domain.com" -To user@domain.com-Attachments $Target -Subject "A Seriuos Error on server1,please check" $body -BodyAsHtml  -SmtpServer domain.com
}
else
{
    write-host "nothing to process"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...