LDAP nach User durchsuchen

  • Hi,
    ich hab da ein kleines Problem und zwar versuch ich im AD per LDAP nach Usern zu suchen.

    Es soll folgender maßen funktionieren:

    Wenn ich den Nachname eingebe sollen alles User die den Namen haben oder enthalten aufeglistet werden mit sonstigen informationen.
    wenn ich die den Username angeben soll der zugehörige User angezeigt werden genau so soll es möglich sein nach Telefonnummer oder Vorname zusuchen.

    Leider kenne ich mich nicht ganz so gut mit LDAP aus.

    ich hab dieses Script hier im englischen Forum gefunden.
    Es bring mich schon mal so weit wenn ich den Username eingeben bekomm ich die Daten des Users. Aber jetzt möchte ich auch Suchen könnne.

    Vielleicht kann mir ja einer helfen?

    [autoit]

    #include <GUIConstants.au3>
    #include <Misc.au3>
    Const $ADS_NAME_INITTYPE_GC = 3
    Const $ADS_NAME_TYPE_NT4 = 3
    Const $ADS_NAME_TYPE_1779 = 1
    DIM $unlock
    DIM $mgrvalue
    DIM $mgrsplit
    DIM $manager
    DIM $mgr
    DIM $title
    DIM $pwdexpires
    $oMyError = ObjEvent("AutoIt.Error", "ComError")
    $objRootDSE = ObjGet("LDAP://RootDSE")
    $username = InputBox("Username","Please input a username:")
    If @error Then
    MsgBox(0, 'username', 'Username does not exist or not able to communicate with ' & @LogonDomain)
    Else
    ; DNS domain name.
    $objTrans = ObjCreate("NameTranslate")
    $objTrans.Init ($ADS_NAME_INITTYPE_GC, "")
    $objTrans.Set ($ADS_NAME_TYPE_1779, @LogonDomain)
    $objTrans.Set ($ADS_NAME_TYPE_NT4, @LogonDomain & "\" & $username)
    $strUserDN = $objTrans.Get ($ADS_NAME_TYPE_1779)
    $UserObj = ObjGet("LDAP://" & $strUserDN)
    If @error Then
    MsgBox(0, 'username', 'Username does not exist or not able to communicate with ' & @LogonDomain)
    Else

    Call ("Displayinfo")


    EndIf
    EndIf
    $UserObj = ""
    $oMyError = ObjEvent("AutoIt.Error", "")
    ;COM Error function
    Func ComError()
    If IsObj($oMyError) Then
    $HexNumber = Hex($oMyError.number, 8)
    SetError($HexNumber)
    Else
    SetError(1)
    EndIf
    Return 0
    EndFunc ;==>ComError

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func Displayinfo()
    GUICreate ( "Active Directory Information", 500, 600, 300, 300)

    GUICtrlCreateLabel ("Username: ", 10, 10, 60, 20)
    GUICtrlCreateLabel ("First Name: ", 10, 30, 60, 20)
    GUICtrlCreateLabel ("Last Name: ", 200, 30, 60, 20)
    GUICtrlCreateLabel ("Display Name: ", 10, 50, 100, 20)
    GUICtrlCreateLabel ("Title: ", 10, 70, 100, 20)
    GUICtrlCreateLabel ("Manager: ", 10, 90, 100, 20)
    GUICtrlCreateLabel ("Description: ", 10, 150, 100, 20)
    GUICtrlCreateLabel ("Office: ", 10, 190, 60, 20)
    GUICtrlCreateLabel ("Department: ", 10, 250, 100, 20)
    GUICtrlCreateLabel ("Telephone Number: ", 10, 290, 90, 40)
    GUICtrlCreateLabel ("Mobile Number: ", 10, 320, 100, 20)
    GUICtrlCreateLabel ("Home Number: ", 10, 350, 100, 20)
    GUICtrlCreateLabel ("Email Address: ", 10, 370, 100, 20)
    GUICtrlCreateLabel ("Logon Script: ", 10, 410, 100, 20)
    GUICtrlCreateLabel ("Account:", 10, 430, 100, 20)
    GUICtrlCreateLabel ("Number of bad logon attempts since last reset: ", 310, 420, 120, 40)
    GUICtrlCreateLabel ("Password Last Changed: ", 10, 460, 100, 40)
    GUICtrlCreateLabel ("90 Day Password Expiration: ", 10, 490, 100, 40)
    GUICtrlCreateLabel ("Last Logon: ", 10, 540, 100, 20)

    [/autoit][autoit][/autoit][autoit]

    $font="Tahoma"
    GUISetFont (9, 600, $font) ; will display underlined characters
    $unlock = GUICtrlCreateButton ( "UNLOCK Account", 180, 425, 120, 25)
    GUICtrlSetState ( $unlock, $Gui_Disable )
    GUICtrlCreateLabel ( ''& $username, 100, 10, 100, 20)
    GUICtrlSetColor(-1,0x0000CC) ; Blue
    GUICtrlCreateLabel (''& $UserObj.FirstName, 100, 30, 100, 20)
    GUICtrlCreateLabel (''& $UserObj.LastName, 300, 30, 100, 20)
    GUICtrlCreateLabel (''& $UserObj.FullName, 100, 50, 300, 20)
    GUICtrlCreateLabel (''& $UserObj.Title, 100, 70, 100, 20)
    $title = GUICtrlRead ( $title )
    If $title = 0 Then
    GUICtrlCreateLabel ('', 100, 70, 100, 20)
    Endif

    [/autoit][autoit][/autoit][autoit]

    $mgr = GUICtrlCreateLabel (''& $UserObj.Manager, 100, 90, 400, 70)
    $mgrvalue = GUICtrlRead ( $mgr )
    $mgrsplit = StringSplit ( ""& $mgrvalue, ",")
    $manager = StringTrimLeft ( ''& $mgrsplit[1], 3 )
    GUICtrlCreateLabel (''& $manager, 100, 90, 400, 70)
    GUICtrlCreateLabel (''& $UserObj.Description, 100, 150, 300, 40)
    GUICtrlCreateLabel (''& $UserObj.physicalDeliveryOfficeName, 100, 190, 100, 50)
    GUICtrlCreateLabel (''& $UserObj.Department, 100, 250, 200, 20)
    GUICtrlCreateLabel (''& $UserObj.TelephoneNumber, 100, 300, 250, 20)
    GUICtrlCreateLabel (''& $UserObj.TelephoneMobile, 100, 320, 250, 20)
    GUICtrlCreateLabel (''& $UserObj.TelephoneHome, 120, 350, 250, 20)
    GUICtrlCreateLabel (''& $UserObj.EmailAddress, 100, 370, 300, 20)
    GUICtrlCreateLabel (''& $UserObj.LoginScript, 100, 410, 200, 15)

    [/autoit][autoit][/autoit][autoit]

    $locked = GUICtrlCreateLabel (""& $UserObj.IsAccountLocked, 100, 430, 10, 20)
    If GuiCtrlread ($locked) = 0 or 39 Then
    GUICtrlCreateLabel ("NOT Locked", 100, 430, 80, 15)
    GUICtrlSetBkColor(-1, 0x00ff00);Green
    Else
    MsgBox(0, 'INFO', "User Account Lock value is: "& $locked)
    GUICtrlCreateLabel ("LOCKED", 10, 430, 60, 15)
    GUICtrlSetBkColor(-1, 0xff0000) ; Red
    GUICtrlSetState ( $unlock, $Gui_Enable )

    [/autoit][autoit][/autoit][autoit]

    EndIf
    $lastchange = $UserObj.PasswordLastChanged

    [/autoit][autoit][/autoit][autoit]

    $Date = StringMid($lastchange, 5, 2) & "/" & StringMid($lastchange, 7, 2) & "/" & StringMid($lastchange, 1, 4)
    $Time = StringMid($lastchange, 9, 2) & ":" & StringMid($lastchange, 11, 2) & ":" & StringMid($lastchange, 13, 2)
    GUICtrlCreateLabel ($Date & " "& $Time, 100, 460, 150, 20)
    $pwdexpires = StringMid($lastchange, 5, 2) + 3 & "/" & StringMid($lastchange, 7, 2) & "/" & StringMid($lastchange, 1, 4)
    GUICtrlCreateLabel ( $pwdexpires & ' ' & $Time, 100, 490, 150, 20)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $lastlogin = $UserObj.LastLogin

    [/autoit][autoit][/autoit][autoit]

    $Date = StringMid($lastlogin, 5, 2) & "/" & StringMid($lastlogin, 7, 2) & "/" & StringMid($lastlogin, 1, 4)
    $Time = StringMid($lastlogin, 9, 2) & ":" & StringMid($lastlogin, 11, 2) & ":" & StringMid($lastlogin, 13, 2)
    GUICtrlCreateLabel ($Date & " "& $Time, 100, 540, 150, 20)
    $badlogin = GUICtrlCreateLabel (""& $UserObj.BadLoginCount, 430, 430, 20, 15)
    If GuiCtrlread ($badlogin) = 0 Then
    GUICtrlSetBkColor(-1, 0x00ff00);Green
    Else
    GUICtrlSetBkColor(-1, 0xff0000) ; Red
    EndIf

    [/autoit][autoit][/autoit][autoit]

    GUISetState ()


    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $unlock
    If $UserObj.IsAccountLocked Then
    $UserObj.IsAccountLocked = False
    $UserObj.SetInfo
    MsgBox(0, 'INFO', "User Account was Unlocked. It will take approximately 5 mins to reflect this change.")
    GUICtrlCreateLabel (""& $UserObj.IsAccountLocked, 100, 430, 10, 20)
    EndIf

    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd


    EndFunc

    [/autoit]

    besten Dank schon mal