Logo faq-o-matic.net
Logo faq-o-matic.net

Ein AD-Attribut zu einem Logon-Namen herausfinden

von veröffentlicht am28. Juli 2004, 14:59 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Active Directory, AD: Erweiterte Abfragen, Scripting   Translate with Google Translate Translate EN   Die angezeigte Seite drucken
Zuletzt aktualisiert: 12. Februar 2013

Das folgende Skript gibt den Wert eines beliebigen Attributs aus dem Active Directory für einen User zurück, dessen Logon-Name (SAM-Name, sAMAccountName) bekannt ist. Das ist nützlich, wenn beispielsweise zu der bekannten Systemvariablen %username% die Mailadresse, die Telefonnummer, der LDAP-Pfad oder irgendwas anderes aus dem AD erfragt werden soll.

Es gibt auch die Möglichkeit, das COM-Objekt „ADSystemInfo“ zu nutzen, das eine ganze Reihe von Informationen über den gerade angemeldeten Benutzer zurückgibt. In vielen Situationen ist das die einfachste und schnellste Variante. Das hier gezeigte Script hat aber den Vorteil, dass es beliebige Logonnamen zu beliebigen AD-Feldern auflösen kann, nicht nur den des gerade angemeldeten Users. Dadurch ist es sehr flexibel.

Funktionsweise: Die aufzurufende Funktion „SAM2ADInfo“ erwartet zwei Parameter: der erste ist der Loginname, der zweite ist der ADSI-Name des Feldes, das zurückgegeben werden soll. Eine Übersicht über wichtige Feldnamen findet sich hier.

Download: SAM2ADInfo.vbs  SAM2ADInfo.vbs (1,1 KiB, 1.802-mal heruntergeladen, letzte Änderung am 12. Februar 2013)

  1. strLDAP = SAM2ADInfo(„NilsK“, „mail“)
  2. WSCript.Echo strLDAP
  3. function SAM2ADInfo(strSAMName, strField)
  4. ‚ Funktion: Übersetzt den übergebenen SAMAccountName per ADS-Abfrage in ein beliebiges ADS-Feld
  5. ‚ Eingabeparameter: strSAMName: Der NT-Anmeldename; strField: ADSI-Name des erwarteten Feldes
  6. ‚ Rückgabewert: Der gefundene Wert oder ein Leerstring
  7.     Dim objConn
  8.     Dim objCommand
  9.     dim objArgs
  10.     On Error Resume Next
  11.     ‚Create ADO connection object for Active Directory
  12.     Set objConn = CreateObject(„ADODB.Connection“)
  13.     objConn.Provider = „ADsDSOObject“
  14.     objConn.Open „Active Directory Provider“
  15.     if checkit(„Fehler beim ADO-Zugriff auf Active Directory!“) then exit function
  16.     ‚Create ADO command object for the connection.
  17.     Set objCommand = CreateObject(„ADODB.Command“)
  18.     objCommand.ActiveConnection = objConn
  19.     if checkit(„Fehler beim Definieren des ADO-Kommandos!“) then exit function
  20.     ‚Get the ADsPath for the domain to search.
  21.     Set objRoot = GetObject(„LDAP://rootDSE“)
  22.     strDomain = objRoot.Get(„defaultNamingContext“)
  23.     Set objDomain = GetObject(„LDAP://“ & strDomain)
  24.     if checkit(„Fehler beim Ansprechen des Active Directory!“) then exit function
  25.     ‚Abfrage
  26.     strSQL = „SELECT „ & strField & “ FROM ‚“
  27.     strSQL = strSQL & „LDAP://“ & strDomain & „‚ WHERE sAMAccountName = ‚“ & strSAMName & „‚“
  28.     ‚Assemble the commandtext.
  29.     objCommand.CommandText = strSQL
  30.     if checkit(„Fehler beim Übergeben des Kommandos!“) then exit function
  31.     ‚Execute the query.
  32.     Set objRS = objCommand.Execute
  33.     if checkit(„Fehler beim Ausführen der Suche im Active Directory!“) then exit function
  34.     strOutput = „“
  35.     strOutput = objRS.Fields(0).value
  36.     on error goto 0
  37.     SAM2ADInfo = strOutput
  38. end function
  39. ‚ Fehlerprüfung
  40. function checkit(Nachricht)
  41.     checkit = false
  42.     if err.number <>0 then
  43.         Nachricht = Nachricht & “ [„ & err.description & “ („ & err.number & „)]“
  44.                 wscript.echo Nachricht
  45.         err.clear
  46.         checkit=true
  47.     end if
  48. end function

OU des angemeldeten Benutzers herausfinden

Um etwa die OU des angemeldeten Benutzers im Logonscript herauszufinden, ersetze man die erste Zeile des obigen Skripts durch folgenden Block:

  1. Set objNet = CreateObject(„Wscript.Network“)
  2. strUser = objNet.UserName
  3. WScript.Echo SAM2ADInfo(strUser, „distinguishedName“)

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!