1

是否有一种简单的方法来监视给定的 Windows 进程是否存在明确定义的 .NET 异常(第一次或第二次机会)并在引发该异常时运行 powershell 脚本?我真的不需要进程转储(还)。

4

1 回答 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 回答