Active Directory - Wildcard Search , Listview Gruppen

  • Hallo zusammen,

    ich hatte die Tage mal ein Thread eröffnet mit Datenabfrage & co.
    Dachte mir das es für die Arbeit auch keine schlechte Idee wäre.

    Es gibt bereits ein Beispiel Script im AD UDF "userinfo.au3". Es beinhaltet einiges was ich gerne bei mir im Script auch haben möchte.
    Leider ist mir das Script zu kompliziert um mir Informationen daraus zu ziehen die ich benötige, noch kann ich es als beispiel script nehmen.

    Da ich im Unternehmen nur selbstgeschriebene Codes nehmen darf, wäre es sowieso keine Option das Script zu nehmen.

    Ich suche mir Täglich einen Wund innerhalb des AD's und benötige zum Teil mehrfach die selben Daten am Tag, deshalb muss etwas anderes her.
    Soviel dazu, nun zum Script.


    Suche von Benutzerdaten über Wildcards.

    • Wenn Telefonnummer eingetragen worden ist, dann suche Benutzer und gebe Datensatz raus.
    • Wenn Vorname oder Nachname eingetragen worden ist, dann suche Benutzer und gebe Datensatz raus.
    • Wenn Email Adresse eingetragen worden ist, dann suche Benutzer und gebe Datensatz raus.

    Benutzerdaten

    • Name, Adresse, Raum, EMail, Login Name, Firma, Gruppen
    • Daten mit anderen Personen vergleichen
    • Die Gruppen im ListView anzeigen

    Neue Nutzer anlegen

    Spoiler anzeigen
  • Schritt 1: Such Dir die Namen der LDAP properties für Telefonnummer, Vorname, Nachname, E-Mail heraus.
    Es empfiehlt sich das Beispielscript _AD_GetObjectProperties.au3. Das zeigt Dir alle Properties für Deinen User an.

    Schritt 2: Überlege Dir, wie die GUI aussehen soll. Z.B. nur ein Eingabefeld und der Benutzer markiert über Checkboxen, ob es Name, Vorname oder Mail sein soll. Mit _AD_GetObjectsInOU baust Du dann die entsprechende Anfrage auf.

    Schritt 3: Ist ANR (Ambigous Name Resolution) eine Möglichkeit für Dich? Die sucht in allen Namenbezogenen Feldern, bringt aber eventuell mehr Treffer als gewünscht (siehe Beispiel 3 in _AD_GetObjectsInOU.au3).

  • Vornamen, Nachnamen & Email & co suche ich mir ja bereits über _AD_GetObjectAttribute - was soweit auch funktioniert.


    Im Spoiler ist das bisherige Script aus zu sehen - da ist auch bereits eine ListViewBox drinne - muss mal ergooglen wie man die ListView mit Daten aus einem Array befüllt
    und schön übersichtlich die Daten anzeigt. <--- Dazu weiß ich noch garnichts.

    Scritt 3 schaue ich mir später mal an - danke

  • Wenn ich Dein Skript richtig verstanden habe, dann gibt es Name, Vorname, Telefonnummer etc. für den User an, der eingegeben wurde (SamAccountname bzw. FQDN).
    Ich hätte Dein Skript aber so verstanden, dass Du einen Vornamen eingibst und dann alle Mitarbeiter (einer oder mehrere) mit diesem Vornamen angezeigt werden. Falls dem so ist, dann musst Du das Skript anders aufbauen.
    Vielleicht siehst Du Dir mein Beispielskript ADQU (Active Directory User User) an. Link in der Signatur.

  • Geplant ist folgendes :


    In der Suchzeile wird etwas von einem Benutzer eingegeben, ob Telefonnummer, Name, Vorname, Loginname, Email-Adresse.

    Dann wird, wenn der Benutzer gefunden wurde das Profil quasi ausgegeben.

    Ich möchte von der Person Max Mustermann alle Daten haben.
    Dann muss ich in der Suche eingeben:

    Suche: MMustermann

    Name: Max Mustermann
    Mail: Mustermann@beispiel.email.de
    TelefonNr: 100
    Raum: Kühlschrank
    Firma: Mustermann Industrie
    Profilpfad: \\datenserver\Profil\Mmustermann
    Anmeldeskript: virus.bat
    Anmeldename: MMustermann

    All diese Information sollen allerdings auch ausgegeben werden, wenn nicht nur der Loginname verwendet wird.
    Derzeit sieht es so aus das ich den Loginnamen angeben muss, damit Daten angezeigt werden.

    Wenn ich jetzt in der Suche: Mustermann oder 100 eingebe, passiert halt nichts.

  • Quick&Dirty und noch nicht mit allen Such- bzw. Anzeigefeldern befüllt:

    Code
    #include <AD.au3>
    
    
    Global $sInput = InputBox("Suche nach AD Konten", "Bitte geben Sie Name, Vorname, Telefonnummer, Loginname oder E-Mail ein:")
    If @error <> 0 Then Exit
    _AD_Open()
    Global $aUser = _AD_GetObjectsInOU("", "(|(name=" & $sInput & ")(sn=" & $sInput & ")(Givenname=" & $sInput & ")(telephoneNumber=" & $sInput & ")(sAMAccountName=" & $sInput & ")(mail=" & $sInput & "))", 2, "name,mail,telephoneNumber,profilePath,displayname")
    _ArrayDisplay($aUser)
  • Danke für die Hilfe water.
    Funktioniert an sich sehr gut, hätte dazu aber noch eine Frage.
    Ist es möglich die Daten innerhalb dieses Arrays einzeln gefiltert wieder auszugeben?
    Hatte das bisher ja über die _AD_GetObjectAttribute einzeln auflisten lassen.
    (siehe Code)


    2 Mal editiert, zuletzt von Kazume (28. August 2015 um 11:43)

  • Du solltest in Deiner GUI eine Listview einbauen in der Du dann alle Felder des Arrays anzeigst.
    Denn die Abfragen können mehr als einen Treffer liefern (z.B. Bei Abfrage nach Vorname).

  • Du solltest in Deiner GUI eine Listview einbauen in der Du dann alle Felder des Arrays anzeigst.
    Denn die Abfragen können mehr als einen Treffer liefern (z.B. Bei Abfrage nach Vorname).


    Ich habe in meiner GUI eine Listview eingebaut.

    Quick&Dirty und noch nicht mit allen Such- bzw. Anzeigefeldern befüllt:

    Code
    #include <AD.au3>
    
    
    Global $sInput = InputBox("Suche nach AD Konten", "Bitte geben Sie Name, Vorname, Telefonnummer, Loginname oder E-Mail ein:")
    If @error <> 0 Then Exit
    _AD_Open()
    Global $aUser = _AD_GetObjectsInOU("", "(|(name=" & $sInput & ")(sn=" & $sInput & ")(Givenname=" & $sInput & ")(telephoneNumber=" & $sInput & ")(sAMAccountName=" & $sInput & ")(mail=" & $sInput & "))", 2, "name,mail,telephoneNumber,profilePath,displayname")
    _ArrayDisplay($aUser)


    Mit _GUICtrlListView_AddArray($ListView1,$aUser) listet er mir dann auch die benötigten Informationen auf.
    Das Problem dabei ist folgendes :

    Es wird eine seperate InputBox erstellt, ich würde schon gerne innerhalb der GUI eine Inputbox haben, allerdings funktioniert genau das hier nicht.

    Mit Global $sInput = GUICtrlCreateInput("", 704, 176, 89, 21) klappt es nicht. Die Felder bleiben leer und es wird kein innhalt ausgegeben.
    Wenn ich die GUICTRLCreateInput innerhalb der funktion erst erzeugen lassen ( was allerdings auch zuspät schon ist ) funktioniert es zwar, aber es listet
    mir dann alle Benutzer des AD's auf ohne das, dass Feld voll sein muss mit Input.


    Ich hoffe das war deutlich genug?


    Edit : Habe es mit GUICtrlRead lösen können.

    Wie entfernt man eigentlich die Zahlen in der ListView? Die erste Zahl zählt die Einträge & die zweite ist immer auf 5 ?

    Einmal editiert, zuletzt von Kazume (3. September 2015 um 13:12)

  • Indem Du erst ab Zeile 2 die Daten aus dem Array übernimmst.