Adam el Automatizador

La base de datos de Active Directory es, de lejos, la pieza más importante de AD. Después de todo, sin la base de datos, AD no sería muy bueno en absoluto. ¿Dónde está la base de datos de Active Directory? ¿Dónde está la ubicación de ntds.dit? ¿Y cómo supervisar la base de datos? En este tutorial aprenderá la respuesta a estas preguntas:

Es importante supervisar todos los aspectos de AD y la base de datos en sí es de suma importancia. Por ello, merece la pena dedicar tiempo a investigar en qué consiste la base de datos y cuál es la mejor manera de supervisarla para garantizar que se mantenga en buen estado.

En este artículo, vamos a crear un script de PowerShell que le permita ver una consulta de 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 general de la base de datos.

Tabla de contenidos

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

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

Para asegurarnos de que obtenemos la ruta adecuada, primero tendremos que averiguar dónde está la ruta de la base de datos. Este valor se almacena en la clave del registro HKLM:\System\CurrentControlSet\Services\NTDS\Parameters.

Encontrar la base de datos de AD con PowerShell

Vamos a consultar todos los DCs en nuestro entorno para la ruta del archivo de 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 sé la ruta de la base de datos de Active Directory en cada DC, ahora puedo consultar cada uno de los tamaños actuales. Para ello, voy a utilizar un bucle foreach e iterar a través de la variable $dbs que he creado anteriormente y que contiene el nombre del controlador de dominio y la ruta del archivo de base de datos en cada uno.

Monitorización del tamaño de la base de datos de AD

Para entender más fácilmente la salida, voy a utilizar un hashtable $output, asignarle valores a medida que voy leyendo 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 base de datos. Esto mostrará una salida más agradable que simplemente PSComputerName, DSA Database File 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) $output}

Este fragmento le dará una salida agradable de DatabaseSizeDB y una propiedad DomainController. En mi entorno de demostración, sólo tengo un único DC. Si se ejecuta esto en la producción, verá 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 usted tiene una secuencia de comandos que puede ejecutar en cualquier momento para obtener una instantánea de punto en el tiempo de cómo el tamaño de cada uno de sus archivos de base de datos de Active Directory ha crecido a!