Отображение сведений о событии в сообщении при присоединении задачи к событию

348
Yaroslav

Когда я пытаюсь безопасно удалить оборудование, Windows 10 сообщает мне, что программа использует оборудование, но не сообщает мне, какая это программа. Я обнаружил, что эта информация записывается в Event Viewer в System как событие 225 как таковое:

Приложение \ Device \ HarddiskVolume3 \ Program Files ... с идентификатором процесса 4424 остановило удаление или извлечение для устройства USB ....

Это довольно полезная информация, которую я хотел бы видеть, не посещая программу просмотра событий каждый раз. Я обнаружил, что в Просмотрщике событий есть кнопка, которая заявляет Прикрепить задачу к этому событию ... При нажатии она предлагает опцию для отображения сообщения каждый раз, когда это событие регистрируется. Я хотел бы, чтобы задача отображала детали события каждый раз, когда событие 225 регистрируется. Кажется, что это возможно, но я не эксперт системного уровня.

Есть ли простой способ достичь моей цели? Если нет в отображаемом сообщении, есть ли способ написать командный файл вместо этого, чтобы сообщить мне эту информацию?

2

2 ответа на вопрос

1
Ben N

Действие «показать сообщение» устарело и может фактически ничего не делать. Вместо этого вы можете использовать PowerShell! Сохраните это как .ps1файл где-нибудь на компьютере, например C:\evtmsg.ps1:

Add-Type -AssemblyName System.Windows.Forms $lastEvt = Get-WinEvent -LogName 'System' -MaxEvents 20 | ? { $_.Id -eq 225 } | select -First 1 [System.Windows.Forms.MessageBox]::Show(($lastEvt.Message), 'Ejection Failed') 

Этот сценарий получает самый последний экземпляр события 225 из системного журнала и использует библиотеку Windows Forms для отображения своего сообщения.

Используйте команду « Присоединить задачу к этому событию» в экземпляре события 225. На экране «Действие» выберите «запустить программу», а затем укажите powershellпрограмму / сценарий для запуска. В поле «добавить аргументы» поместите эту строку с учетом места сохранения сценария PowerShell:

-executionpolicy bypass -windowstyle hidden -file C:\evtmsg.ps1 

Изменение должно вступить в силу сразу после создания задачи.

0
Pimp Juice IT

Отправить уведомление по электронной почте, когда генерируется определенный идентификатор события

У меня есть похожее решение, которым я хотел бы поделиться, на тот случай, если кто-то может его использовать, поскольку оно, кажется, помогает мне и кричит на меня только тогда, когда оно мне явно нужно, основываясь на конкретных идентификаторах событий .

планирование

Это решение использует планировщик заданий работы, которая имеет много различных триггеров из На событии, когда он должен выполнить. Вы указываете конкретный идентификатор события, который должен « инициировать » выполнение.

enter image description here enter image description here


Скрипт 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 enter image description here

На вкладке « Общие » запланированной задачи убедитесь, что выбраны параметры « Выполнить независимо от того, вошел ли пользователь в систему» и « Выполнить с наивысшими привилегиями» .

enter image description here


Электронная почта

Если все перечисленное выше установлено точно так же, как указано, это будет гарантировать, что когда будут сгенерированы те конкретные идентификаторы системных событий, которые вы определили как « триггеры », для которых будет отправлено электронное письмо, и, будем надеяться, с соответствующими подробностями в соответствии с событием, которое вызывает каждое из них.

Я упоминаю об этом только потому, что заметил, что если два события, которые соответствуют логике PowerShell$event | format-list -property * | out-string, создаются быстро, то тело письма будет содержать информацию о последнем событии, основанную на времени.

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

enter image description here

Спасибо за ответ. Хотя я не совсем искал письмо (поскольку оно предназначено для моего компьютера, а не для удаленного сервера), я действительно многому научился из вашего ответа. Тем более, что есть другая сторона окон, которая позволяет мне немного ее настроить! Я думаю, что в следующий раз я немного повеселюсь, исследуя это. Yaroslav 6 лет назад 0

Похожие вопросы