Consultar registros de eventos del controlador de dominio mediante PowerShell

La mayoría de los administradores de Active Directory han trabajado con Programa de evaluación de riesgos de Active Directory (Descargar PDF), una herramienta diseñada para realizar una completa validación de bosques de Active Directory. Sin embargo, la herramienta ADRP solo está disponible para clientes de Microsoft Premier. Una de las comprobaciones que realiza la herramienta ADRAP es comprobar los registros de eventos del controlador de dominio. DRAP verifica los registros de eventos en los controladores de dominio para asegurarse de que no haya advertencias ni errores relacionados con las funciones de Active Directory, como la replicación, KCC, KDC y otros componentes de Active Directory. Si no tiene acceso a la herramienta ADRAP y desea verificar los registros de eventos en todos los controladores de dominio, puede usar el script de PowerShell, que explicaremos en este artículo. El script de PowerShell puede ayudarlo a recopilar registros de eventos de todos los controladores de dominio y preparar un hermoso informe CSV que lo ayudará a comprender los errores y advertencias que se informan en todos los controladores de dominio.

Índice

Requisitos

Antes de ejecutar el script, asegúrese de cumplir con los requisitos a continuación:

  • Asegúrese de ejecutar el script desde un servidor miembro o controlador de dominio de Windows Server 2012 R2.
  • Asegúrese de crear una carpeta llamada "C: Temp" en su ordenador desde donde ejecutará el script.
  • Recopile todos los nombres de los controladores de dominio del bosque de Active Directory y especifíquelos en el archivo C:TempDCList.TXT.
  • Cree un archivo de texto QueryLogs.TXT y agregue los registros de eventos que le gustaría solicitar al controlador de dominio de destino. QueryLogs.TXT debería verse como la siguiente captura de pantalla:

¿Qué hace el guión?

Este script de PowerShell se conecta a cada controlador de dominio especificado en el archivo DCList.TXT y luego recopila el nombre del registro de eventos para consultar los controladores de dominio de destino desde el archivo QueryLogs.TXT. Para recopilar nombres de controladores de dominio del bosque de Active Directory, puede ejecutar Servidor DSQuery - Acerca de RDN> C:TempDCList.TXT mandar Debe especificar un nombre de registro de eventos corto en el archivo QueryLogs.TXT. El archivo QueryLogs.TXT se parece a la siguiente captura de pantalla:

Después de cumplir con los requisitos anteriores, ejecute el script desde la línea de comandos con privilegios elevados. Tenga en cuenta que la recopilación de información de registro de eventos y mensajes de cada controlador de dominio puede llevar mucho tiempo. También depende de la cantidad de controladores de dominio en los que ejecute el script.

### El guión comienza aquí ###

$ TestCSVFile = "C:TempDCLogStatus.CSV"
Elimine el elemento $ TestCSVFile -ErrorAction SilentlyContinue
$ ThisStr = "Controlador de dominio, conexión, estado del equipo, nombre de registro, número de errores en los últimos 10 días, número de alertas en los últimos 10 días, estado final"
Agregar el contenido de "$ TestCSVFile" $ ThisStr
$GDCList = "C:TempDCList.TXT"
$DCLogs="C:TempQueryLogs.DPC"
$ AfterDate = (get-date) .AddDays (-10)

$TotNo = 0
$ ItemCount = 0
$ Texto de prueba = ""
$EstadoPrueba = ""
$ValorSuma = ""
$ Cualquier Brecha = "No"
$ErrorONo = "No"
$ CualquieraOk = "No"
$TotDCsInError = 0

Foreach ($ ItemName en Get-Content "$ GDCList")
{
$DCConError = "Bien"
$DCConStatus = "Bien"
$ ProcederONo = "Sí"
$ Error.Borrar ()
$ AllServices = Get-WMIObject Win32_Service -computer $ ItemName
SI ($ Error.Cuenta -ne 0)
{
$ ProcederONo = "No"
$ TotDCsInError ++
$ DCConError = $ Error[0].Mensaje.de.exclusión

$FinalSTR = $ItemName + ", OK: Error: $DCConError"
Agregando contenido "$ TestCSVFile" $ FinalSTR
}

SI ($ ProcederONo -eq "Sí")
{
$ ComConError = "Bien"

ForEach ($ ThisLog en Obtener contenido $ DCLogs)
{
$ Error.Borrar ()
$ LogError = Get-eventlog -ComputerName $ ItemName -log "$ ThisLog" -EntryType Error -After $ AfterDate
CUANDO ($Error.cuenta -eq 0)
{
$ FinStatus = "Bueno"
$CualquieraOk = "Sí"
$ LogErrCnt = $ LogError.Count
SI ($ LogErrCnt -ne 0)
{
$ EsErrAva = "Sí"
$ AnyGap = "Sí"
$ FinStatus = "No está bien"
}

$ LogWarnings = Get-eventlog -ComputerName $ ItemName -log "$ ThisLog" -EntryType Advertencia -Después de $ AfterDate
$ LogWarningsCnt = $ LogWarnings.Count

$ ThisSTr = $ ItemName + "," + $ DCConError + "," + $ ComConError + "," + $ ThisLog + "," + $ LogErrCnt + "," + $ LogWarningsCnt + "," + $ FinStatus
Agregar el contenido de "$ TestCSVFile" $ ThisStr

SI ($ AnyGap -eq "Sí")
{
$ Total No ++
}
}
el otro
{
$ ComConError = $ Error[0].Mensaje.de.exclusión
$ FinalSTR = $ ItemName + ", $ DCConError," + $ ComConError
Agregando contenido "$ TestCSVFile" $ FinalSTR
}
}
}
el otro
{
$ ComConError = $ Error[0].Mensaje.de.exclusión
$ FinalSTR = $ ItemName + ", $ DCConError," + $ ComConError
Agregando contenido "$ TestCSVFile" $ FinalSTR
}
}

$OtroTexto = ""
CUANDO ($ TotDCsInError -ne 0)
{
$ OthText = "Algunos controladores de dominio no se han verificado debido a problemas de conexión o comandos".
}
SI ($ AnyGap -eq "Sí")
{
$ TestText = "Los controladores de dominio tienen errores en los registros de eventos. Descargue y verifique el resultado. $ OthText"
$ValorSuma = $NúmeroTotal
$ TestStatus = "Alto"
}
SI ($ AnyGap -eq "No")
{
$ TestText = "No se encontraron errores en los registros de eventos de los controladores de dominio. $ OthText"
$ValorSuma = ""
$ TestStatus = "Alquilado"

SI ($CualquieraOk -eq "No")
{
$ TestText = "Error al ejecutar el paquete dinámico".
$ValorSuma = ""
$ TestStatus = "Ejecutado con errores".
}
}

$ STR = $ ADTestName + "," + $ TestStartTime + "," + $ TestStatus + "," + $ SumVal + "," + $ TestText

### El guión termina aquí ###

Después de que la secuencia de comandos sea exitosa, puede abrir C: Temp DCLogStatus.CSV y ver el informe. El informe incluirá el nombre de cada controlador de dominio, el nombre del registro, la cantidad de errores informados en los últimos 10 días, la cantidad de alertas informadas en los últimos 10 días y el estado final, como se muestra en la siguiente captura de pantalla:

Registros de eventos del controlador de dominio

Tenga en cuenta que la secuencia de comandos ha recopilado la cantidad de errores y advertencias de cada controlador de dominio en los últimos 10 días. Si desea cambiar la fecha de recogida, puede hacerlo cambiando $ AfterDate = (get-date) .AddDays (-10) cadena en el guión. Se recomienda cambiar el valor de la fecha de recolección por dos días y ver si hay algún error o advertencia registrada en los controladores de dominio recientemente.

Ir a "Aceptar"

Con este script de PowerShell, puede conocer el estado del registro de eventos en cada controlador de dominio. Aunque la secuencia de comandos no recopila mensajes de error y advertencia informados sobre los controladores de dominio, lo ayuda a comprender el estado general de los controladores de dominio.


Artículos de interés

Subir