Cómo Obtener una Lista de Dominios en Su Red
Usando la API de Windows
Si usted es un administrador de red o un desarrollador que trabaja con Active Directory, es posible que frecuentemente necesite recuperar una lista de los dominios presentes en su red. Ya sea para fines de monitoreo, gestión de recursos o para asegurar el cumplimiento de protocolos de seguridad adecuados, tener acceso a la información del dominio es esencial. En esta publicación del blog, explicaremos cómo llevar a cabo esta tarea utilizando la API de Windows con consultas LDAP.
Entendiendo el Problema
Para obtener una lista de todos los dominios en su red, normalmente interactuará con Active Directory. El desafío radica en utilizar el protocolo correcto y las consultas para extraer esta información de manera efectiva. ¡Afortunadamente, la tarea se puede realizar con solo un poco de scripting!
La Solución
Usando VBScript con Consultas LDAP
Una de las formas más sencillas de obtener información de dominio es mediante el uso de VBScript combinado con consultas LDAP (Protocolo de Acceso a Directorios Ligero). A continuación, le guíaremos a través de un script de ejemplo que se puede ejecutar en cualquier máquina conectada a la red donde se usa Active Directory.
Código de Ejemplo de VBScript
Aquí está el script que puede utilizar para recuperar la lista de dominios:
' Este código VBScript obtiene la lista de los dominios contenidos en el
' bosque en el que el usuario que ejecuta el script ha iniciado sesión
' ---------------------------------------------------------------
' Del libro "Active Directory Cookbook" por Robbie Allen
' Editorial: O'Reilly y Associates
' ISBN: 0-596-00466-4
' Sitio web del libro: http://rallenhome.com/books/adcookbook/code.html
' ---------------------------------------------------------------
set objRootDSE = GetObject("LDAP://RootDSE")
strADsPath = "<GC://" & objRootDSE.Get("rootDomainNamingContext") & ">;;"
strFilter = "(objectcategory=domainDNS);"
strAttrs = "name;"
strScope = "SubTree"
set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
set objRS = objConn.Execute(strADsPath & strFilter & strAttrs & strScope)
objRS.MoveFirst
while Not objRS.EOF
Wscript.Echo objRS.Fields(0).Value
objRS.MoveNext
wend
Desglose del Script
-
Inicializar la Conexión LDAP:
- El script comienza obteniendo una referencia a la raíz del directorio.
GetObject("LDAP://RootDSE")
obtiene la raíz del directorio.
-
Establecer la Ruta y Filtros de Consulta:
strADsPath
: Establece la ruta para el contexto de nombramiento del dominio.strFilter
: Especifica el tipo de objetos a buscar; en este caso, solo dominios.
-
Establecer Conexión:
- La conexión a Active Directory se establece utilizando
ADODB.Connection
.
- La conexión a Active Directory se establece utilizando
-
Ejecutar la Consulta:
- La consulta de Active Directory se ejecuta y los resultados se almacenan en un objeto recordset.
-
Mostrar Resultados:
- El script itera a través del recordset, mostrando cada nombre de dominio hasta que se hayan mostrado todas las entradas.
Recursos Adicionales
Para aquellos que prefieren trabajar en el entorno de C#, esta versión en C# también está disponible. Esta alternativa puede proporcionar resultados similares con consideraciones de implementación potencialmente diferentes.
Conclusión
Recuperar una lista de dominios en su red es un proceso sencillo cuando se utiliza la API de Windows junto con consultas LDAP. Al usar el código VBScript proporcionado, puede reunir rápidamente y de manera efectiva los datos necesarios, mejorando su capacidad para gestionar recursos de Active Directory. Si busca un rendimiento o características adicionales, considere explorar la alternativa en C# para una solución más robusta.
Ahora está equipado con las herramientas para gestionar eficazmente los dominios de su red. ¡Intente implementar el código anterior y verá lo poderoso que puede ser el scripting en la gestión de redes!