J'utilise ce script dans le cadre d'une surveillance de l'état de réplication des partitions d'annuaire de mon architecture Active Directory
Source / Exemple :
'Récupération d'information de la forêt ou d'un domaine enfant
'appel du script sans argument ou en passant le DN du domaine racine:
'Retour des informations pour la forêt
'appel du script en passant le DN d'un domaine enfant existant:
'Retour des informations pour ce domaine enfant
'Retour des informations pour la forêt
'
'Retourne les domaines, ses subref et les DC sous la syntaxe suivante:
'nom_dns_du_domaine#dn_du_domaine#subrefs_du_domaine1;subrefs_du_domaine2;..; subrefs_du_domainen#dn_des_dc_du_domaine1;dn_des_dc_du_domaine2;...;dn_des_dc_du_domainen
'Création d'un objet pour la lecture d'argument
Set objArgs = WScript.Arguments
'Création d'une connexion avec ADO
Set con = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
con.Open "Provider=ADsDSOObject;"
objCommand.ActiveConnection = con
'Lecture du DN du domaine de recherche
if (objArgs.Count = 0) then
'Si pas d'argument, alors on retourne tous les DC de la forêt
Set objRootDSE = GetObject("LDAP://rootDSE")
DN_Domaine=objRootDSE.Get("rootdomainNamingContext")
else
DN_Domaine=objArgs(0)
end if
'Positionnement du filtre
filtreDC="(objectClass=domain)"
'Positionnement des champs à retourner
retourattributs="distinguishedname,canonicalname,masteredby,subrefs" 'attributs à retourner
'Profondeur de la recherche
scope="subtree" 'profondeur de recherche
scopeone="onelevel"
'Nb d'objets à retourner
objCommand.Properties("Page Size")= 5000 '5000 enregistrements max à retourner
'Constitution de la requête
requeterechercheDC="<GC://" & DN_Domaine & ">;" & filtreDC & ";" & retourattributs & ";" & scope
'Exécution de la requête de récupération des DC par domaines
objCommand.CommandText=requeterechercheDC
Set rs=objCommand.Execute
out=""
if (rs.RecordCount > 0) then
rs.MoveFirst
do
For Each dom In rs.Fields("canonicalname").value
'Récup du Canonical Name
CNDOM=left(dom,len(dom)-1)
'Récup du Distinguished Name
DNDOM=rs.Fields("distinguishedname").value
'Récup des SubRefs
DNSDOM=""
if not(IsNull(rs.Fields("subrefs").value)) then
For Each sdom In rs.Fields("subrefs").value
DNSDOM=DNSDOM & sdom & ";"
next
'Retrait du dernier ;
DNSDOM=left(DNSDOM,len(DNSDOM)-1)
end if
next
'Récup des DC du domaine
DNDC=""
if not(IsNull(rs.Fields("masteredby").value)) then
For Each dc In rs.Fields("masteredby").value
DNDC=DNDC & dc & ";"
next
'Retrait du dernier ;
DNDC=left(DNDC,len(DNDC)-1)
end if
rs.movenext
out=out & CNDOM & "#" & DNDOM & "#" & DNSDOM & "#" & DNDC & vbcrlf
loop while Not rs.EOF
'Retrait du dernier retour chariot
out=left(out,len(out)-1)
end if
'Affichage de la sortie
wscript.echo out
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.