是否有一种简单的方法来监视给定的 Windows 进程是否存在明确定义的 .NET 异常(第一次或第二次机会)并在引发该异常时运行 powershell 脚本?我真的不需要进程转储(还)。
问问题
60 次
1 回答
1
.NET 应用程序错误记录到应用程序事件日志中。在计划任务管理器中,我们可以添加一个由 .NET 运行时异常事件触发的任务。
在实践中,这有点麻烦,因为我们需要一些额外的东西ValueQueries
来完成这项工作,我已经制作了一个可以导入到任务计划程序中的任务 XML。请参阅此要点。
该任务需要使用 调用我们的 PowerShell 脚本,EventId
我们从中检索相应的事件日志项,检查堆栈跟踪的消息,并搜索匹配的已知异常字符串。
param($eventRecordID, $eventChannel = "Application")
$event = Get-WinEvent -LogName $eventChannel -FilterXPath "<QueryList><Query Id='0' Path='$eventChannel'><Select Path='$eventChannel'>*[System[(EventRecordID=$eventRecordID)]]</Select></Query></QueryList>"
$stackTrace = $event.Message
if($stackTrace -match "ConfigurationErrorsException")
{
echo "Error Thrown in Application"
# do some stuff
}
启用任务后,每次 .NET 应用程序出现故障时,都应运行 PowerShell 脚本。
于 2020-03-26T10:41:36.210 回答