Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: Nutzerdaten aus Active Directory auslesen

  Alt 7. Okt 2005, 18:22
Das Active Directory kann mit ADO ausgelesen werden.
Die Abfragen macht man mit einem abgewandelten SQL Befehlssatz.

Ich habe hier mal ein kleines VB Beispiel fertiggemacht, welches das Prinzip verdeutlicht...

Code:
'###################################################################
'# VB Script ("".vbs)
'#  Autor: Jens Warkentin ([url]www.InnovaSoft.de[/url])
'###################################################################

Const ADS_SCOPE_SUBTREE = 2
Dim Wurzel,DOMAINROOT,Password
Set Wurzel = GetObject("LDAP://RootDSE")
'------------------------------------------------------------

DOMAINROOT = "'LDAP://"+Wurzel.Get("defaultNamingContext")&"'"

'ADO Commection erzeugen
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =  CreateObject("ADODB.Command")

'ADO Provider auswählen (exisiert nur auf DC's und auf PC's mit ADS Verwaltungstools)
objConnection.Provider = "ADsDSOObject"

'ADOConn connecten
objConnection.Open "Active Directory Provider"

'ADOCmd mit der ADOConnection verbinden
Set objCOmmand.ActiveConnection = objConnection

'ADOCmd CommandText setzen und ausführen
'Dieser Select holt alle Benutzerobjekte im AD
objCommand.CommandText = _
    "Select Name, Location, CN, DistinguishedName, ADsPath from " & DOMAINROOT &
    "Where objectCategory='person' AND objectClass='user' "
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute

'Ergebnismenge durchlaufen
objRecordSet.MoveFirst
dim ADSPath,userobj,Vorname,Nachname,Email

Do Until objRecordSet.EOF
    ' vollqualifizierten LDAP Namen des Users holen
    ADSPath= "CN: " & objRecordSet.Fields("CN").Value & " " & "ADsPath: " & objRecordSet.Fields("ADsPath").Value

    'Benutzer Objekt erstellen (OLEVARIANT)
    set UserObj = GetObject(objRecordSet.Fields("ADsPath").Value)
    ' Werte auslesen
    UserObj.Getinfo
    Vorname = UserObj.FirstName
    Nachname = UserObj.LastName
    Telefon = UserObj.Email

    'Mach was mit Vorname, Nachname, Email ....

    'Benutzerobjekt freigeben
    set userobj = nothing
    'nächsten User holen
    objRecordSet.MoveNext
Loop
  Mit Zitat antworten Zitat