Spesso ho bisogno di fare delle elaborazioni particolarmente approfondite sui dati estratti, ed allora mi risulta molto comodo lavorare direttamente con Microsoft Access. La lettura di Active Directory tramite l'utilizzo di un Recordset pertanto è l'ideale!
Function LeggiAD() Dim adoConnection As New ADODB.Connection Dim adoCommand As New ADODB.Command Dim adoRecordset As New ADODB.Recordset Dim objRootDSE As Object Dim strDNSDomain As String Set adoConnection = New ADODB.Connection adoConnection.Provider = "ADsDSOOBject" adoConnection.Open ("Active Directory Provider") Set adoCommand.ActiveConnection = adoConnection Set objRootDSE = GetObject("<ldap://RootDSE/>"> strDNSDomain = objRootDSE.Get("defaultNamingContext") adoCommand.CommandText = "<ldap://" & strDNSDomain & >;" & _ "(&(objectCategory=person)" & _ "(objectClass=user));" & _ sAMAccountName,cn;subtree" adoCommand.Properties("Page Size") = 100 adoCommand.Properties("Timeout") = 30 adoCommand.Properties("Cache Results") = False Set adoRecordset = adoCommand.Execute Do Until adoRecordset.EOF rem fai qualcosa con adoRecordset("sAMAccountName").Value rem fai qualcosa con adoRecordset("cn").Value adoRecordset.MoveNext Loop adoRecordset.Close adoConnection.Close Set adoConnection = Nothing Set adoCommand = Nothing Set objRootDSE = Nothing Set adoRecordset = Nothing End FunctionQuesto codice scorre tutti gli utenti presenti in Active Directory (filtrati da objectCategory=person e da objectClass=user) ed estrae i campi sAMAccountName e cn: i dati restituiti potrebbero poi essere inseriti in un altra tabella, o potrebbero essere elaborati in altro modo. In genere utilizzo questo codice come base di partenza, e lo personalizzo a seconda delle necessità!
1 commento:
bellissimo...non ci capisco niente :-)
Posta un commento