Я написал скрипт для проверки перечисленных ниже 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"
}