Comment obtenir une liste des domaines sur votre réseau
en utilisant l’API Windows
Si vous êtes administrateur réseau ou développeur travaillant avec Active Directory, vous pourriez avoir besoin de récupérer fréquemment une liste des domaines présents sur votre réseau. Que ce soit à des fins de surveillance, de gestion des ressources ou pour garantir des protocoles de sécurité appropriés, avoir accès aux informations sur les domaines est essentiel. Dans cet article de blog, nous expliquerons comment accomplir cette tâche en utilisant l’API Windows avec des requêtes LDAP.
Comprendre le problème
Pour obtenir une liste de tous les domaines de votre réseau, vous interagirez généralement avec Active Directory. Le défi réside dans l’utilisation du bon protocole et des bonnes requêtes pour extraire efficacement ces informations. Heureusement, la tâche peut être réalisée avec juste un peu de script !
La solution
Utilisation de VBScript avec des requêtes LDAP
L’une des manières les plus simples de récupérer les informations sur les domaines est d’utiliser VBScript combiné à des requêtes LDAP (Protocole d’accès aux annuaires léger). Ci-dessous, nous vous guiderons à travers un script d’exemple qui peut être exécuté sur n’importe quelle machine connectée au réseau où Active Directory est utilisé.
Exemple de code VBScript
Voici le script que vous pouvez utiliser pour récupérer la liste des domaines :
' Ce code VBScript obtient la liste des domaines contenus dans la
' forêt dans laquelle l'utilisateur exécutant le script est connecté
' ---------------------------------------------------------------
' Extrait du livre "Active Directory Cookbook" par Robbie Allen
' Éditeur : O'Reilly and Associates
' ISBN : 0-596-00466-4
' Site web du livre : 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
Détails du script
-
Initialiser la connexion LDAP :
- Le script commence par obtenir une référence à la racine de l’annuaire.
GetObject("LDAP://RootDSE")
récupère la racine de l’annuaire.
-
Définir le chemin et les filtres de requête :
strADsPath
: Cela définit le chemin pour le contexte de nommage du domaine.strFilter
: Spécifie le type d’objets à rechercher ; dans ce cas, uniquement les domaines.
-
Établir la connexion :
- La connexion à Active Directory est établie en utilisant
ADODB.Connection
.
- La connexion à Active Directory est établie en utilisant
-
Exécuter la requête :
- La requête Active Directory est exécutée, et les résultats sont stockés dans un objet recordset.
-
Afficher les résultats :
- Le script boucle à travers le recordset, affichant chaque nom de domaine jusqu’à ce que toutes les entrées aient été montrées.
Ressources supplémentaires
Pour ceux qui préfèrent travailler dans l’environnement C#, cette version C# est également disponible. Cette alternative peut fournir des résultats similaires avec éventuellement des considérations d’implémentation différentes.
Conclusion
Récupérer une liste de domaines sur votre réseau est un processus simple lorsque vous utilisez l’API Windows associée à des requêtes LDAP. En utilisant le code VBScript fourni, vous pouvez rapidement et efficacement rassembler les données nécessaires, améliorant votre capacité à gérer les ressources Active Directory. Si vous recherchez performances ou fonctionnalités supplémentaires, envisagez d’explorer l’alternative C# pour une solution plus robuste.
Vous êtes maintenant équipé des outils pour gérer efficacement les domaines de votre réseau. Essayez d’implémenter le code ci-dessus, et vous verrez à quel point le script est puissant dans la gestion réseau !