Приветствую всех, сегодня рассмотрим один из простых способов отправки уведомления по почте, при не удачной попытке авторизации на пользовательском ПК или сервере.
- Заходим в планировщик заданий, и создаем правило со следующими параметрами.
Первая вкладка Общие

2. В разделе Триггеры, создаем новый триггер, как ниже.

В данном случаи мы будем отслеживать событие 4625, которое возникает при не удачном входе в систему.
3. Во вкладке Действия, создаём новое действия со следующими параметрами.

Программа которая будет использоваться это powershell.exe А в аргументах вводим команду -noprofile и путь до скрипта, который мы позже создадим.
4. В следующей вкладке это Условия, в ней оставляем все без изменений как на скрине ниже.

5. В пятой вкладке и в шестой, делам также как и на скрине.


6. В заключительной части, создадим скрипт который и будет запускать тогда как произойдет событие 4625.
1 2 3 4 5 6 7 8 9 10 11 |
$EmailFrom = "С_какой_почты_будут_приходить_письма" $EmailTo = "куда_будут_приходить_письма" $Subject = "Alert" $Body=Get-WinEvent -FilterHashtable @{LogName="Security";ID=4625} | Select TimeCreated,@{n="User";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "TargetUserName"} | %{$_.'#text'}}},@{n="ComputerName";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "WorkstationName"}| %{$_.'#text'}}},@{n="IPAddress";e={([xml]$_.ToXml()).Event.EventData.Data | ? {$_.Name -eq "IPAddress"}| %{$_.'#text'}}} | select-object -first 1 $BodyL = "`n"+$Body.TimeCreated +"`t"+ $Body.User +"`t"+ $Body.ComputerName +"`t"+ $Body.IPAddress $Body = "`nВремя: "+$Body.TimeCreated +"`nИмя пользователя: "+ $Body.User +"`nКомпьютер-источник: "+ $Body.ComputerName +"`nIP источника: "+ $Body.IPAddress $SMTPServer = "smtp.mail.ru" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("С_какой_почты_будут_приходить_письма", "пароль_от_этой_почты"); $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body) |
Я пробовал с яндекса не отправляется письма, но с mail.ru все в порядке.
Данный скрипт можно написать в обычном блокноте с расширением .ps1 , сохранив его в любом месте на диске и указав его в планировщике задач.
Также его тестовое можно вставить в терминал powershell.exe и запустить что бы убедиться в том что он отрабатывает как надо. Имейте ввиду что у вас должна быть событие 4625.
Если вы ранее не запускали какие либо скрипты в powershell и у вас при выполнение в терминале возникает ошибка.

Вам нужно запустить команду, для разрешения выполнения скриптов powershell
1 |
Set-ExecutionPolicy Unrestricted |
После запуска команды вам будет предложено подтвердить изменение политики выполнения. Нажав на Y
На этом все, когда кто либо попытается войти на компьютер введя не верный пароль или логин, к вам на почту придет сообщение. Особенно это удобно использовать на сервере. Где можно определить с какого ip адреса была сделана попытка входа.