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

  1. 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.
  2. 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.
  3. Établir la connexion :

    • La connexion à Active Directory est établie en utilisant ADODB.Connection.
  4. 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.
  5. 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 !