Como Obter uma Lista de Domínios na Sua Rede
Usando a API do Windows
Se você é um administrador de rede ou um desenvolvedor trabalhando com o Active Directory, pode frequentemente precisar recuperar uma lista de domínios presentes na sua rede. Seja para fins de monitoramento, gerenciamento de recursos ou para garantir protocolos de segurança adequados, ter acesso às informações do domínio é essencial. Neste post do blog, explicaremos como realizar essa tarefa usando a API do Windows com consultas LDAP.
Entendendo o Problema
Para obter uma lista de todos os domínios na sua rede, você tipicamente interagirá com o Active Directory. O desafio está em usar o protocolo e as consultas corretas para extrair essas informações de maneira eficaz. Felizmente, a tarefa pode ser realizada com apenas um pouco de script!
A Solução
Usando VBScript com Consultas LDAP
Uma das maneiras mais simplificadas de recuperar informações de domínio é usando VBScript combinado com consultas LDAP (Single Directory Access Protocol). Abaixo, iremos guiá-lo através de um script de exemplo que pode ser executado em qualquer máquina conectada à rede onde o Active Directory está em uso.
Código de Exemplo em VBScript
Aqui está o script que você pode usar para recuperar a lista de domínios:
' Este código VBScript obtém a lista dos domínios contidos na
' floresta na qual o usuário que está executando o script está logado
' ---------------------------------------------------------------
' Do livro "Active Directory Cookbook" por Robbie Allen
' Editora: O'Reilly and Associates
' ISBN: 0-596-00466-4
' Site do livro: 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
Análise do Script
-
Inicializar Conexão LDAP:
- O script começa obtendo uma referência à raiz do diretório.
GetObject("LDAP://RootDSE")
busca a raiz do diretório.
-
Definir Caminho e Filtros de Consulta:
strADsPath
: Isso define o caminho para o contexto de nomeação do domínio.strFilter
: Especifica o tipo de objetos a serem pesquisados; neste caso, apenas domínios.
-
Estabelecer Conexão:
- A conexão com o Active Directory é estabelecida usando
ADODB.Connection
.
- A conexão com o Active Directory é estabelecida usando
-
Executar a Consulta:
- A consulta do Active Directory é executada e os resultados são armazenados em um objeto recordset.
-
Exibir Resultados:
- O script itera através do recordset, exibindo cada nome de domínio até que todas as entradas tenham sido mostradas.
Recursos Adicionais
Para aqueles que preferem trabalhar no ambiente C#, esta versão em C# também está disponível. Esta alternativa pode fornecer resultados semelhantes com considerações de implementação potencialmente diferentes.
Conclusão
Recuperar uma lista de domínios na sua rede é um processo simples ao utilizar a API do Windows juntamente com consultas LDAP. Usando o código VBScript fornecido, você pode coletar rapidamente e efetivamente os dados necessários, melhorando sua capacidade de gerenciar os recursos do Active Directory. Se você está buscando por desempenho adicional ou recursos, considere explorar a alternativa em C# para uma solução mais robusta.
Agora você está equipado com as ferramentas para gerenciar os domínios da sua rede de forma eficiente. Experimente implementar o código acima e você perceberá como a programação pode ser poderosa na gestão de redes!