Hallo zusammen
Ist es möglich im AD nur nach Attribut initials zu suchen wenn man den Namen vom User nicht weis?
Gruss Roland
Hallo zusammen
Ist es möglich im AD nur nach Attribut initials zu suchen wenn man den Namen vom User nicht weis?
Gruss Roland
Kein Problem.
Mit meiner AD UDF und Funktion _AD_GetObjectsInOU sollte das gehen.
Ich arbeit schon mit deiner UDF und finde die sehr gut.
Wenn mit dem Namen gesucht wird funktioniert ales bestenst, aber wenn ich nach dem Kürzel suche wird nichts gefunden.
Es handelt sich hier um ein Telefonbuch für die Mitarbeiter.
Hier noch ein kleiner Auschnid von dem Code:
Global $sOU = ""
Global $sLDAPFilter = "(&(objectCategory=Person)(ANR=" & GUICtrlRead($ADuser) & "))" ;Use ANR (Ambiguous Name Resolution).
Global $sDataToRetrieve = "DisplayName,initials,mail,telephoneNumber,Mobile,physicalDeliveryOfficeName" ;sAMAccountName,department,distinguishedName,Title
_AD_Open()
Global $aUserIDs = _AD_GetObjectsInOU($sOU, $sLDAPFilter, 2, $sDataToRetrieve, "displayName")
If @error Then
MsgBox(64, "Active Directory Functions", "No objects found")
EndIf
_AD_Close()
Welchen Fehler (@error und @extended) erhältst Du, wenn Du nach dem Kürzel suchst? Wie lautet dann der benutzte LDAP-Filter?
Den benutzten LDAP-Filter ist der gleiche wie oben im CODE.
Da ich beim Namens & Büro suche das Kürzel angezeigt bekomme, dachte ich sollte es ja auch für das Kürzel gehen.
Im AD Register unter Allgemein / Büro wird die Tel.-Nr. Kurzwahlnummer hinterlegt und wenn ich nach Kürzwahl nummer suche wird mir auch das Kürzel angezeigt.
@error Fehler nach Kürzel suche:
3 - No records returned from Active Directory. $sFilter didn't return a record |
Ich habe es auch schon mit _AD_GetObjectAttribute von deiner UDF versucht. Aber mit initials findet gehts auch nicht.
Vermutlich mache ich etwas falsch oder verstehe die ganze LDAP funktion nicht
Danke & Gruss
Hast du mal geschaut, was dir _AD_GetObjectsInOU zurück gibt (danach _ArrayDisplay($aUserIDs)) bzw. Casesensitiv ist das nicht oder (DisplayName <> displayName)?
Danke für eure Denkanstösse und der gute Link der mir weiter geholfen hat.
Konnte es jetzt umsetzen und funktioniert.
Func _SucheStart() ;AD Suche
$ReadTexBox = GUICtrlRead($ADuser) ; Text aus TextBox in Variable speichern
If GUICtrlRead($ADuser) = "" Then ;Prüfen ob TextBox leer ist
MsgBox(0,"Info..", "Bitte einen Text eingeben")
Else
_GUICtrlListView_DeleteAllItems($idListview) ;Alle alten Einträge in ListView Löschen
Global $sOU = ""
Global $sLDAPFilter = "(&(objectCategory=Person)(ANR=" & $ReadTexBox & "))" ;Use ANR (Ambiguous Name Resolution).
Global $sDataToRetrieve = "DisplayName,initials,mail,telephoneNumber,Mobile,physicalDeliveryOfficeName" ;sAMAccountName,department,distinguishedName,Title
_AD_Open()
Global $aUserIDs = _AD_GetObjectsInOU($sOU, $sLDAPFilter, 2, $sDataToRetrieve, "displayName")
If @error Then
$sLDAPFilter = "(&(objectCategory=Person)(initials=" & $ReadTexBox & "))"
$aUserIDs = _AD_GetObjectsInOU($sOU, $sLDAPFilter, 2, $sDataToRetrieve, "displayName")
If @error Then
$sLDAPFilter = "(&(objectCategory=Person)(Mobile=*" & $ReadTexBox & "))"
$aUserIDs = _AD_GetObjectsInOU($sOU, $sLDAPFilter, 2, $sDataToRetrieve, "displayName")
if @error Then
$sLDAPFilter = "(&(objectCategory=Person)(telephoneNumber=*" & $ReadTexBox & "))"
$aUserIDs = _AD_GetObjectsInOU($sOU, $sLDAPFilter, 2, $sDataToRetrieve, "displayName")
if @error Then
MsgBox(64, "Telefonbuch...", "Keine Übereinstimmung gefunden")
EndIf
EndIf
EndIf
EndIf
_AD_Close()
Alles anzeigen