Telefonnummerabfrage im AD 2008R2 64Bit

  • So vielleicht?

    [autoit]

    #include <AD.au3>
    Global $sName = "", $sTitle = "Telefonnummernabfrage"
    _AD_Open()
    While 1
    While $sName = ""
    $sName = InputBox($sTitle, "Bitte geben Sie den zu suchenden Familiennamen ein." & @CRLF & "* als Platzhalter erlaubt.")
    If @error = 1 Then Exit
    WEnd
    If @error Then Exit MsgBox(16, $sTitle, "Error: " & @error & " bei Erstellung der Verbindung zum Active Directory!")
    Global $asResult = _AD_GetobjectsInOU("", "(name=" & $sName & "*)", 2, "name, telephoneNumber,mobile")
    Select
    Case @error = 0
    _ArrayDisplay($asResult)
    Case @error = 3
    MsgBox(16, $sTitle, "Name '" & $sName & "' wurde nicht gefunden!")
    Case Else
    MsgBox(16, $sTitle, "Error: " & @error & " bei Abfrage nach Name '" & $sName & "'!")
    EndSelect
    $sName = ""
    WEnd
    _AD_Close()

    [/autoit]
  • okay... wird abgefangen....

    könnten man die Bezeichnungen Col 0 Col 1 usw noch in "Namen" "Tele Büro" und "Handy" ändern....?

    ich habe mir das mla angeguckt, verstehe es wohl nicht. Habe auch nocht nichts mit arrays gemacht.....

    bin mir nicht sicher ob ich was mit "dim array" machen muss......

    gruß

    Einmal editiert, zuletzt von firewalldevil (13. März 2012 um 12:30)

  • So?

    [autoit]

    #include <AD.au3>
    Global $sName = "", $sTitle = "Telefonnummernabfrage"
    _AD_Open()
    While 1
    While $sName = ""
    $sName = InputBox($sTitle, "Bitte geben Sie den zu suchenden Familiennamen ein.", "", "", "", 140)
    If @error = 1 Then Exit
    WEnd
    If @error Then Exit MsgBox(16, $sTitle, "Error: " & @error & " bei Erstellung der Verbindung zum Active Directory!")
    Global $asResult = _AD_GetobjectsInOU("", "(name=" & $sName & "*)", 2, "name, telephoneNumber,mobile")
    Select
    Case @error = 0
    _ArrayDisplay($asResult, $sTitle, -1, 0, "", "|", "|Name|Telefon Büro|Handy")
    Case @error = 3
    MsgBox(16, $sTitle, "Name '" & $sName & "' wurde nicht gefunden!")
    Case Else
    MsgBox(16, $sTitle, "Error: " & @error & " bei Abfrage nach Name '" & $sName & "'!")
    EndSelect
    $sName = ""
    WEnd
    _AD_Close()

    [/autoit]
  • teste ich sehr gerne....

    es gibt "dummy" user und User deren Feld frei sind...

    wenn ein User ein "Mobile" hat hat er auch ein Büro Telefon, somit würde ich gerne alle nicht anzeigen, die kein Büro Telefon haben...

    mir ist klar das irgendwann deine Bereitschaft am Ende ist, aber solltest du noch Energie haben und mir helfen wollen....

    TOP, sag ich nur

    Gruß & Danke

  • Noch'n Versuch. Die LDAP-Query habe ich erweitert, so dass nur Personen und nur solche bei denen das Feld "telephoneNumber" nicht leer ist, angezeigt werden:

    [autoit]

    #include <AD.au3>
    Global $sName = "", $sTitle = "Telefonnummernabfrage"
    _AD_Open()
    While 1
    While $sName = ""
    $sName = InputBox($sTitle, "Bitte geben Sie den zu suchenden Familiennamen ein.", "", "", "", 140)
    If @error = 1 Then Exit
    WEnd
    If @error Then Exit MsgBox(16, $sTitle, "Error: " & @error & " bei Erstellung der Verbindung zum Active Directory!")
    Global $asResult = _AD_GetobjectsInOU("", "(&(objectcategory=person)(objectclass=user)(name=" & $sName & "*)(telephoneNumber=*))", 2, "name, telephoneNumber,mobile")
    Select
    Case @error = 0
    _ArrayDisplay($asResult, $sTitle, -1, 0, "", "|", "|Name|Telefon Büro|Handy")
    Case @error = 3
    MsgBox(16, $sTitle, "Name '" & $sName & "' wurde nicht gefunden!")
    Case Else
    MsgBox(16, $sTitle, "Error: " & @error & " bei Abfrage nach Name '" & $sName & "'!")
    EndSelect
    $sName = ""
    WEnd
    _AD_Close()

    [/autoit]


    Nun müsste man das nur noch mit einer GUI verschönern ;)

  • moin...

    klasse, läuft.

    Habe die Abfragebox wieder "zurück" gesetzt.... das Fenster war kleiner bzw der Text nicht ganz sichtbar.

    Das man jetzt das ganze noch schön machen könnte dachte ich auch heute morgen....

    Habe mir die GUI angeguckt, müsste nur noch wissen, wie ich welche Funktion hinter welchen buttton bekommen bzw Ausgabefenster.

    :?:

    könnte man noch deaktievierte User rausfiltern?

    Es werden bei uns nicht alle User sofort gelöscht, aber das Tool zeigt diese auch an....

    Einmal editiert, zuletzt von firewalldevil (14. März 2012 um 07:55)

  • "Deaktivierte" user sind "disabled"? Hier die Version um User die "disabled" sind, auszublenden:

    [autoit]

    #include <AD.au3>
    Global $sName = "", $sTitle = "Telefonnummernabfrage"
    _AD_Open()
    While 1
    While $sName = ""
    $sName = InputBox($sTitle, "Bitte geben Sie den zu suchenden Familiennamen ein.", "", "", "", 140)
    If @error = 1 Then Exit
    WEnd
    If @error Then Exit MsgBox(16, $sTitle, "Error: " & @error & " bei Erstellung der Verbindung zum Active Directory!")
    Global $asResult = _AD_GetobjectsInOU("", "(&(objectcategory=person)(objectclass=user)(name=" & $sName & "*)(telephoneNumber=*)(!userAccountControl:1.2.840.113556.1.4.803:=" & $ADS_UF_ACCOUNTDISABLE & "))", 2, "name, telephoneNumber,mobile")
    Select
    Case @error = 0
    _ArrayDisplay($asResult, $sTitle, -1, 0, "", "|", "|Name|Telefon Büro|Handy")
    Case @error = 3
    MsgBox(16, $sTitle, "Name '" & $sName & "' wurde nicht gefunden!")
    Case Else
    MsgBox(16, $sTitle, "Error: " & @error & " bei Abfrage nach Name '" & $sName & "'!")
    EndSelect
    $sName = ""
    WEnd
    _AD_Close()

    [/autoit]
  • Moin...

    wenn ich innerhalb des Scripts ein Info Fenster einblenden möchte, kann ich doch eine Tastatur kombi anlegen und ein Fenster würde bis man okay drückt geöffnet werden, oder.

    Habe aktuell kein Zugriff auf meine alten Scripte......

  • Hab das Ding mal auf GUI umgestellt und einen Hilfe Button ("?") eingebaut.

    Spoiler anzeigen
    [autoit]

    #include <AD.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

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

    Global $sName = "", $sTitle = "Telefonnummernabfrage"
    Global $sVersion = "1.0", $sAutor = "water", $sVDatum = "2012/03/15"

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

    #region ### START Koda GUI section ### Form=
    Global $hForm = GUICreate($sTitle, 615, 440, 192, 124)
    Global $hInput = GUICtrlCreateInput("", 56, 22, 233, 21)
    GUICtrlCreateLabel("Name:", 8, 24, 35, 17)
    Global $hBtn_OK = GUICtrlCreateButton("OK", 296, 22, 41, 21)
    Global $hBtn_Exit = GUICtrlCreateButton("Exit", 536, 22, 65, 21)
    Global $hBTN_Help = GUICtrlCreateButton("?", 352, 22, 33, 21)
    Global $hList = GUICtrlCreateListView("Name|Telefon Büro|Handy", 8, 64, 601, 357)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $hBtn_Exit
    Exit
    Case $hBtn_OK
    $sName = GUICtrlRead($hInput)
    If $sName <> "" Then _Process()
    Case $hBTN_Help
    _Help()
    EndSwitch
    WEnd

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

    Func _Process()

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

    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($hList)) ; Clear the ListView
    _AD_Open()
    If @error Then Exit MsgBox(16, $sTitle, "Error: " & @error & " bei Erstellung der Verbindung zum Active Directory!")
    Global $asResult = _AD_GetobjectsInOU("", "(&(objectcategory=person)(objectclass=user)(name=" & $sName & "*)(telephoneNumber=*)(!userAccountControl:1.2.840.113556.1.4.803:=" & $ADS_UF_ACCOUNTDISABLE & "))", 2, "name, telephoneNumber,mobile")
    Select
    Case @error = 0
    For $i = 1 To $asResult[0][0]
    GUICtrlCreateListViewItem($asResult[$i][0] & "|" & $asResult[$i][1] & "|" & $asResult[$i][2], $hList)
    Next
    Case @error = 3
    MsgBox(16, $sTitle, "Name '" & $sName & "' wurde nicht gefunden!")
    Case Else
    MsgBox(16, $sTitle, "Error: " & @error & " bei Abfrage nach Name '" & $sName & "'!")
    EndSelect
    _GUICtrlListView_SetColumnWidth($hList, 0, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hList, 1, $LVSCW_AUTOSIZE)
    _GUICtrlListView_SetColumnWidth($hList, 2, $LVSCW_AUTOSIZE)
    _AD_Close()

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

    EndFunc ;==>_Process

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

    Func _Help()

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

    MsgBox(64, "About", $sTitle & @CRLF & @CRLF & "Programm written by ... " & _
    @CRLF & @CRLF & "Version: " & $sVersion & @CRLF & "Autor: " & $sAutor & @CRLF & "Date: " & $sVDatum)

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

    EndFunc ;==>_Help

    [/autoit]
  • habe versucht eine txt datei zu lesen.....

    Funktion angepasst...

    habe einen weitern button, der wird auch angezeigt ( TF )

    Code
    Func _tf()
    	$hGui = GUICreate('test', 600, 400)
    $hEdit = GUICtrlCreateEdit('', 5, 5, 590, 390)
    GUISetState()
    
    
    $sText = FileRead(@ScriptDir & '\telefonfunktionen.txt') ; Datei lesen
    ; GUICtrlSetData($hEdit, $sText) ; und in Edit-Control einfügen

    das fenster poppt nicht auf....

    in der datei sollen Funktionen vom Telefon so wie Kurzwahl & Co angezeigt werden...

    Einmal editiert, zuletzt von firewalldevil (16. März 2012 um 14:43)

  • Ich würde diese Beschreibung in einer PDF-Datei ablegen und diese dann in der Funktion _TF z.B. mit

    [autoit]

    Shellexecute("Hilfe.PDF")

    [/autoit]

    anzeigen.
    Das hat den Vorteil, dass der Benutzer sie auch schön formatiert ausdrucken kann.

  • moin....

    hab ich übernommen, aber die Datei wird nicht angezeigt....

    Könnte man die Suche direkt mit "enter" starten, so muss man erst noch auf "ok" drücken


  • Die Buttons "I" und "T" funktionieren nicht, da Du sie in der Schleife nicht abfragst. Das muss analog zu

    [autoit]

    Case $hBTN_Help
    _Help()

    [/autoit]

    erfolgen.

    Um ENTER verwenden zu können füge bitte folgenden Code vor

    [autoit]

    GUISetState(@SW_SHOW)

    [/autoit]

    ein:

    [autoit]

    ; Set accelerators for Enter
    Local $AccelKeys[1][2] = [["{ENTER}",$hBtn_OK]]
    GUISetAccelerators($AccelKeys)

    [/autoit]
  • Klar, geht mit function GUICtrlCreatePic.