Pide tu presupuesto ya!

Base de datos de Active Directory: Monitoreo de PowerShell simplificado

La base de datos de Active Directory es, con diferencia, la pieza más importante de AD. Después de todo, sin la base de datos, AD no serviría de mucho. ¿Dónde está la base de datos de Active Directory? ¿Dónde está la ubicación ntds.dit? ¿Y cómo monitorear la base de datos? ¡Aprenderás la respuesta a estas preguntas en este tutorial!

Es importante monitorear todos los aspectos de AD y la base de datos en sí es de suma importancia. Es por eso que vale la pena investigar en qué consiste la base de datos y cuál es la mejor manera de monitorearla para garantizar que se mantenga saludable.

En este artículo, vamos a crear un script de PowerShell que le permitirá ver una consulta en cada base de datos de AD en cada DC de su dominio y determinar una métrica importante sobre la base de datos; el tamaño total de la base de datos.

Ntds.dit (La base de datos de Active Directory)

Una base de datos AD consta de un archivo llamado ntds.dit y la ubicación ntds.dit suele estar en C:\Windows\NTDS de cada controlador de dominio.

Para asegurarnos de obtener la ruta adecuada, primero necesitaremos averiguar dónde está la ruta de la base de datos. Este valor se almacena en la clave de registro. HKLM:\Sistema\CurrentControlSet\Services\NTDS\Parameters.

Encontrar la base de datos de AD con PowerShell

Consultemos en todos los controladores de dominio de nuestro entorno la ruta del archivo de la base de datos.

$dcs = (Get-ADDomainController).Name
$dbs = Invoke-Command -ComputerName $dcs -ScriptBlock {
    Get-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\NTDS\Parameters
} | Select PSComputerName,'DSA Database File'

Ahora que conozco la ruta a la base de datos de Active Directory en cada DC, puedo consultar cada uno de los tamaños actuales. Para hacer esto, usaré un para cada recorrer e iterar a través del $dbs variable que creé anteriormente que contiene el nombre del controlador de dominio y la ruta al archivo de base de datos en cada uno.

Monitoreo del tamaño de la base de datos de AD

Para comprender más fácilmente el resultado, usaré un $output tabla hash, asígnele valores mientras leo cada archivo de base de datos, como el nombre del controlador de dominio y el tamaño de cada base de datos. Luego convertiré esto en un objeto personalizado cuando termine de leer el archivo de la base de datos. Esto mostrará un resultado mejor que simplemente PSNombreEquipo, Archivo de base de datos DSA y el tamaño.

$dbs | foreach {
    $output = @{}
    $path = $_.'DSA Database File'
    $output.Add('DomainController', $_.PSComputerName)
    $size = Invoke-Command -ComputerName $_.PSComputerName -ScriptBlock {
        (Get-ItemProperty -Path $using:path).Length /1GB
    }
    $output.Add('DatabaseSizeDB', $size)
    [pscustomobject]$output
}

Este fragmento le dará un buen resultado de DatabaseSizeDB y un DomainController propiedad. En mi entorno de demostración, solo tengo un DC. Si estuviera ejecutando esto en producción, vería cada uno de sus controladores de dominio.
junto con el tamaño total de la base de datos en GB al lado de cada uno.

¡Ahora tiene un script que puede ejecutar en cualquier momento para obtener una instantánea de qué tan grande ha crecido cada uno de sus archivos de base de datos de Active Directory!

Written by

Leave a comment