====== package require twapi twapi::import_commands ################# ### ### Ported by MHo from VBScript: Windows Script Referenz, T.Weltner, S. 306 ### namespace eval adtools { proc attrFromEMail {mail attr} { catch {searchAD "(&(objectCategory=person)(objectClass=user)(mail=$mail))" $attr} ret return $ret } ### Parameter: # LDAP-Suchfilter # Liste von Attributen (durch , getrennt), die zurückgegeben werden sollen # Achtung: Fehler werden hier nicht abgefangen! # proc searchAD {filter return} { # ADODB-Verbindung einrichten set connection [comobj "ADODB.Connection"] $connection -set Provider "ADsDSOObject" $connection Open # Abfrage formulieren set command [comobj "ADODB.Command"] $command -set ActiveConnection $connection # ADsPath der Domäne ermitteln set rootDSE [comobj_object "LDAP://rootDSE"] set ADsPath [$rootDSE -call Get defaultNamingContext] # Kommando konstruieren set query ";$filter;$return;subtree" # Kommando ausführen $command -set CommandText $query set recordSet [$command Execute] set ret [list] if {[$recordSet RecordCount]} { while {![$recordSet EOF]} { # puts [$recordSet GetString] set d [dict create] set o [$recordSet Fields] for {set i 0} {$i < [$o Count]} {incr i} { set item [$o item $i] dict set d [$item Name] [$item Value] } lappend ret $d $recordSet MoveNext } } return $ret } } ### Tests if {[info exists argv0] && [file tail [info script]] eq [file tail $argv0]} { puts [::adtools::attrFromEMail "Test.User22@xyzk.de" "HomeDirectory"] puts [::adtools::attrFromEMail "Test.User22@xyz.de" "HomeDirectory,cn"] puts [::adtools::attrFromEMail "Test.*@xyz.de" "HomeDirectory,sAMAccountName"] puts [::adtools::attrFromEMail "*@xyz.de" "sAMAccountName"] } ====== <>Enter Category Here