crashunderride Geschrieben 9. November 2009 Geschrieben 9. November 2009 Hallo zusammen, ich hab diesmal folgende Aufgabenstellung: Ich habe eine Liste (.txt-File) mit EMPIDs von Mitarbeitern. Nun möchte ich die jeweils zur EMPID gehörige CN, sprich den Login-Namen des Users erhalten. Wie stelle ich das an? Mit "dsget user xxx" auf der Kommandozeile wird ja bei "xxx" immer nach einem User-Merkmal gefragt - und zwar nach dem welches ich eigentlich wissen will (UserDN). Wie kann ich die Abfrage richtig stellen (gib mir den zugehörigen CN zur EMPID aller Zeilen in der Datei C:\input.txt)? Hab schon länger nix mehr mit ADS gemacht und etwas Hilfe wäre supi Alternativ würde ich mir einfach alle User der AD auflisten lassen (mit EMPID) und über eine Bastel-Lösung in Excel die Spalten EMPID (AD-Export) mit EMPID (input/gesucht) vergleichen. Dann nur noch den zugehörigen CN zuordnen und fertig. Eine Skript-Lösung bzw. ein Befehl für die Kommandozeile wäre mir aber deutlich lieber... :marine
mamamia Geschrieben 9. November 2009 Geschrieben 9. November 2009 Hallo, sind denn in der AD die EmpID´s gepflegt? Wenn nicht, kannst du hier gleich abbrechen. Zudem ist der CN nicht der Anmeldename sondern der Name. Der Anmeldename ist der sAMAccountName. Ich würde es einfach per wsh machen. Im ersten Teil ließt du die Txt-Datei ein und im 2ten Teil fragst du die AD ab. Der Query könnte dann so aussehen: query = "<LDAP://DC/OU=Abteilung,OU=Firma,DC=domain,DC=local>;(&(objectClass=user)(EmpID=variable));samAccountName,telephonenumber,distinguishedName;subtree" Das Ergebnis speicherste dann wieder oder lässt es dir ausgeben. So bekommste das eigentlich sehr leicht hin.
crashunderride Geschrieben 9. November 2009 Autor Geschrieben 9. November 2009 Ja, die empids sind gepflegt. Stimmt, SAM! Shame on me... WSH? Das ist ja noch länger her... Der PHP-Code titulierte Code ist also WSH? Muss ich mir mal genauer ansehen...
mamamia Geschrieben 10. November 2009 Geschrieben 10. November 2009 Der PHP-Code titulierte Code ist also WSH? Sowohl als auch, diese Abfrage kannste überall nehmen. Falls du hilfe brauchst, meld dich einfach..
crashunderride Geschrieben 10. November 2009 Autor Geschrieben 10. November 2009 "Meld"! Bis aufs Hello World und bisschen SendKeys-Fun kommt auf Anhieb nicht mehr viel bei raus mit WSH...
mamamia Geschrieben 10. November 2009 Geschrieben 10. November 2009 "Meld"! Bis aufs Hello World und bisschen SendKeys-Fun kommt auf Anhieb nicht mehr viel bei raus mit WSH... Gib mir mal bitte den Schemenhaftenaufbau deiner Datei und wie das Feld in der AD genau heisst. Ich machs schnell..
crashunderride Geschrieben 11. November 2009 Autor Geschrieben 11. November 2009 :eek Danke schon im voraus Die Datei (input.txt) könnte simpler gar nicht aufgebaut sein: Je eine EmployeeID pro Zeile. Diese EmployeeID entspricht dem Feld EMPID im AD. Gesucht (output.txt) wird dann der zugehörige SAM. Reicht dir das als Infos?
mamamia Geschrieben 11. November 2009 Geschrieben 11. November 2009 Konnte es zwar nicht testen, aber sollte gehen. ' Region Description ' ' Name: get_sAMAccountName_by_EmpID ' Author: mamamia ' Description: sucht in AD anhand der EmpID den sAMAccountName ' ' EndRegion Set oFileSys = CreateObject("Scripting.FileSystemObject") Set objcon = CreateObject("ADODB.Connection") Set WShell = CreateObject("Wscript.shell") Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") Dim objcon ConString = "Provider=ADSDSOObject" objConnection.Open "Provider=ADsDSOObject;" objCommand.ActiveConnection = objConnection Set InputFile = oFileSys.OpenTextFile("c:\temp\input.txt") Set OutputFile = oFileSys.OpenTextFile("c:\temp\output.txt") ' Datei mit EmpID´s einlesen und samAccountName suchen Do Until InputFile.AtEndOfStream strLine = InputFile.Readline query = "<LDAP://DomainController/OU=deineOU,DC=domain,DC=local>;(&(&(objectClass=user)(empid=" & strLine & ")(!(userAccountControl:1.2.840.113556.1.4.803:=2))));samAccountName,telephonenumber,distinguishedName;subtree" objCommand.CommandText = query Set objRecordSet = objCommand.Execute WScript.Echo objRecordSet.Fields("samAccountName").Value Loop WScript.Quit Du musst halt bei der query Variable den LDAP String auf deine Domaine anpassen. Das schreiben in eine Datei überlass ich dir, musst ja auch was selber machen
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden