. NET ошибки приложения регистрируются в журнале событий приложений. В диспетчере запланированных задач мы можем добавить задачу, которая вызывается событием исключения. NET Runtime.
На практике это немного хлопотно делать вручную, так как нам нужны дополнительные ValueQueries
чтобы сделать это, я сделал задачу XML, которую можно импортировать в планировщик задач. См. this gist .
Задача должна вызвать наш скрипт 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.