将任务附加到事件时在消息中显示事件详细信息

将任务附加到事件时在消息中显示事件详细信息

当我尝试安全地删除硬件时,Windows 10 告诉我某个程序正在使用该硬件,但没有告诉我它是哪个程序。我发现此信息在系统下的事件查看器中记录为事件 225,如下所示:

应用程序 \Device\HarddiskVolume3\Program Files... 的进程 ID 为 4424,已停止移除或弹出设备 USB....

这是非常有用的信息,我希望不必每次都去事件查看器就能看到这些信息。我发现事件查看器中有一个按钮,上面写着将任务附加到此事件...按下后,它会提供每次记录此事件时显示消息的选项。我希望每次记录事件 225 时任务都会显示事件详细信息。这似乎是可能的,但我不是系统级专家。

有没有简单的方法可以实现我的目标?如果显示消息中没有,是否有办法编写一个批处理文件来告诉我这些信息?

答案1

“显示消息”操作已弃用,实际上可能不执行任何操作。相反,您可以使用 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 窗体库显示其消息。

使用事件查看器将任务附加到此事件命令针对事件 225 的实例。在操作屏幕上,选择“启动程序”,然后指定powershell要运行的程序/脚本。在“添加参数”框中,输入此行,并根据您保存 PowerShell 脚本的位置进行调整:

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

更改应在创建任务后立即生效。

答案2

当生成特定事件 ID 时发送电子邮件通知

我有一个类似的解决方案,我想分享,以防有人可以使用它,因为它似乎帮助了我,并且只有当我根据具体情况明确需要它时才会对我大喊大叫事件 ID

调度

该解决方案使用任务计划程序有很多不同的工作 触发器在一次活动中何时执行。您可以指定具体事件 ID那就是“扳机“ 一次处决。

在此处输入图片描述 在此处输入图片描述


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 <[email protected]>"
$EmailTo = "[email protected]" 
$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 在此处输入图片描述

来自一般的计划任务选项卡,确保无论用户是否登录都运行以最高权限运行两个选项均被选中。

在此处输入图片描述


电子邮件

将上面列出的所有内容都按指定的方式设置,这将确保当那些特定的系统事件 ID生成的是您定义的“触发器“为此,将会发送一封电子邮件,并且希望根据触发每个事件提供适用的详细信息。

我之所以提到这一点,是因为我注意到,如果两个事件与 电源外壳快速创建的逻辑$event | format-list -property * | out-string是,电子邮件正文将包含基于时间的最新事件的详细信息。

请记住,无论事件 ID正文内容,即使它与您定义为触发器的特定事件无关,但可以肯定的是,那些定义为触发的事件确实触发了这封电子邮件,因此在收到时请留意。

在此处输入图片描述

相关内容