將任務附加到事件時在訊息中顯示事件詳細信息

將任務附加到事件時在訊息中顯示事件詳細信息

當我嘗試安全刪除硬體時,Windows 10 告訴我有一個程式正在使用該硬件,但沒有告訴我它是哪個程式。我發現此資訊在系統下的事件檢視器中記錄為事件 225,如下所示:

進程 ID 4424 的應用程式 \Device\HarddiskVolume3\Program Files... 停止了裝置 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 窗體庫來顯示其訊息。

使用事件檢視器將任務附加到此事件powershell對事件 225 的執行個體執行指令。在「新增參數」方塊中,輸入以下行,並根據儲存 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正文內容,即使它與您定義為觸發器的特定事件無關,但可以肯定的是,那些定義的觸發事件確實觸發了此電子郵件,因此在收到時請給予一些注意。

在此輸入影像描述

相關內容