Отправить уведомление по электронной почте, когда генерируется определенный идентификатор события
У меня есть похожее решение, которым я хотел бы поделиться, на тот случай, если кто-то может его использовать, поскольку оно, кажется, помогает мне и кричит на меня только тогда, когда оно мне явно нужно, основываясь на конкретных идентификаторах событий .
планирование
Это решение использует планировщик заданий работы, которая имеет много различных триггеров из На событии, когда он должен выполнить. Вы указываете конкретный идентификатор события, который должен « инициировать » выполнение.
Скрипт PowerShell
Вот сценарий PowerShell, который использует учетную запись Gmail с паролем для отправки электронного письма, которое будет содержать подробные сведения о соответствующих событиях в его теле.
Примечание. Вы должны передать пароль учетной записи Gmail в качестве первого аргумента сценарию PowerShell.
$EmailPassword=$args[0] $event = get-eventlog -LogName System -EntryType Error -newest 1 $PCName = $env:COMPUTERNAME $Username = "LocalMailBox" $EmailBody = $event | format-list -property * | out-string $EmailFrom = "$PCName <noreply@domain.notify>" $EmailTo = "whatever@gmail.com" $EmailSubject = "New Event Log [System]" $SMTPServer = "smtp.gmail.com" Write-host "Sending Email" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $EmailPassword); $SMTPClient.Send($EmailFrom, $EmailTo, $EmailSubject, $EmailBody) Start-Sleep -s 10
На вкладке « Действие » вы создадите действие, определенное как:
- Действие:
Start a program
- Программа / скрипт:
Powershell
- Добавьте аргументы (необязательно):
-ExecutionPolicy Bypass -File "C:\Scripts\PSScript.ps1" "GmailPassword"
- Начать (необязательно):
C:\Windows\System32\WindowsPowerShell\v1.0
На вкладке « Общие » запланированной задачи убедитесь, что выбраны параметры « Выполнить независимо от того, вошел ли пользователь в систему» и « Выполнить с наивысшими привилегиями» .
Электронная почта
Если все перечисленное выше установлено точно так же, как указано, это будет гарантировать, что когда будут сгенерированы те конкретные идентификаторы системных событий, которые вы определили как « триггеры », для которых будет отправлено электронное письмо, и, будем надеяться, с соответствующими подробностями в соответствии с событием, которое вызывает каждое из них.
Я упоминаю об этом только потому, что заметил, что если два события, которые соответствуют логике PowerShell$event | format-list -property * | out-string
, создаются быстро, то тело письма будет содержать информацию о последнем событии, основанную на времени.
Помните, что независимо от содержимого тела идентификатора события и даже если оно не имеет отношения к конкретным событиям, которые вы определили как триггеры, несомненно, что определенные триггеры действительно вызвали это сообщение, поэтому уделите ему некоторое внимание при получении.