¿Por qué se activa el Programador de tareas al registrar un evento pero no el otro?

0

Estoy tratando de rastrear la ocurrencia de eventos de seguridad específicos. Para lograr esto, quiero que se muestre un mensaje siempre que estos eventos se registren en el registro de seguridad de Windows. Debido a que mostrar un mensaje es una característica obsoleta en el Programador de tareas, estoy usando los comandos de Powershell para lograr esto de la siguiente manera:

Desencadenar

On event - Log: Security, Source: Microsoft-Windows-Eventlog, EventID: 1102 

Acción

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

1102.ps1

Add-Type -AssemblyName System.Windows.Forms
$lastEvt = Get-WinEvent -LogName 'Security' -MaxEvents 20 | ? { $_.Id -eq 1102 } | select -First 1
[System.Windows.Forms.MessageBox]::Show(($lastEvt.Message), 'Event ID: 1102')

El Id. De evento 1102 ocurre cada vez que se borra el registro de auditoría. Para activar esto, simplemente entro en el Visor de eventos, hago clic derecho en el registro de seguridad y hago clic en 'Borrar registro ...'. Poco después, aparece un mensaje según lo previsto.

Sin embargo, cuando intento activar el Id. De evento 4719 al cambiar la política de auditoría del sistema, no se muestra ningún mensaje a pesar de que el evento se haya registrado en el registro de seguridad. Ambos disparadores se configuran de manera similar en el Programador de tareas, por lo que no me queda claro por qué esto funciona para uno y no para el otro.

SoraPro
fuente

Respuestas:

0

No nos haga TaskSceduler para esto. Use un consumidor / observador permanente de WmiEvent. Use RegEx o para ir después de múltiples eventos.

Ejemplo:

Add-Type -AssemblyName System.Windows.Forms
$lastEvt = Get-WinEvent -LogName 'Security' -MaxEvents 20 | ? { $_.Id -eq '1102|4719' } | select -First 1
[System.Windows.Forms.MessageBox]::Show(($lastEvt.Message), "Event ID: $($_.Id)")

Esto ha sido posible para múltiples idiomas, por lo que no es una cosa específica de PS, pero, por supuesto, se puede usar PS para ello.

Ejemplos:

Powershell Centralized Log Monitor Monitorea una colección de servidores para eventos de registro específicos y envía alertas por correo electrónico cuando se activan los eventos monitoreados. https://gallery.technet.microsoft.com/scriptcenter/ed188912-1a20-4be9-ae4f-8ac46cf2aae4

https://learn-powershell.net/2013/08/02/powershell-and-events-wmi-temporary-event-subscriptions

http://irl33t.com/blog/2011/06/powershell-script-watch-eventlogs-ps1

https://www.codeguru.com/vb/vbnet30/article.php/c13315/How-to-Build-a-Simple-Event-Log-MontiorWatcher-Using-TCP-in-NET.htm

https://www.codeproject.com/Articles/4857/%2fArticles%2f4857%2fA-realtime-event-log-monitoring-tool

https://www.ravichaganti.com/blog/attaching-scripts-or-tasks-to-windows-event-log-entries-using-powershell-and-wmi

postanote
fuente
Utilizando el Programador de tareas para ver qué sucedería con mi implementación actual, modifiqué el script como sugirió, pero al hacerlo solo imprime "Id. De evento:" en la barra de título del mensaje. En cuanto a su sugerencia de usar un consumidor / observador de WmiEvent, eso es algo de lo que no sé nada. Veré si puedo resolverlo con los enlaces que has proporcionado.
SoraPro
0

Finalmente descubrí esto ... resulta que la Fuente para 4719 es Microsoft-Windows-Security-Auditing y no Microsoft-Windows-Eventlog .

SoraPro
fuente