Platform SDK: Active Directory, ADSI, and Directory Services |
Getting the Organization name from the server is easy. There are two ways to do this:
Dim objRoot As IADs Set objRoot = GetObject("LDAP://Server") Debug.Print objRoot.Get("o")
Or
Dim objRoot As IADs Set objRoot = GetObject("LDAP://Server/rootDSE") Debug.Print objRoot.Get("defaultNamingContext")
Getting the site in which the server resides requires that you search the entire subtree for a computer object with the server name we are looking for. Once you get the distinguished name of the server, in the form "cn=ServerName, cn=Servers, cn=Configuration, o=SiteName,o=OrgName", parse it out for the site name.
Dim ADOConn As ADODB.Connection Dim ADOCommand As New Command Dim RS As ADODB.Recordset Dim strPath As String Set ADOConn = CreateObject("ADODB.Connection") ADOConn.Provider = "ADSDSOObject" ADOConn.Open "Active Directory Provider" Set ADOCommand.ActiveConnection = ADOConn ADOCommand.CommandText = _ "<LDAP://Server>;(&(rdn=ServerName)(objectClass=Computer)) _ ;distinguishedName;subtree" Set RS = ADOCommand.Execute While Not RS.EOF 'Store the distinguished name strPath = RS.Fields(0) 'Find the "ou=" nStart = InStr(strPath, "ou=") 'Add the length of "ou=" nStart = nStart + Len("ou=") 'Find the next comma nEnd = InStr(nStart, strPath, ",") 'The site name is between the "ou=" and the next comma Debug.Print Mid(strPath, nStart, nEnd - nStart) RS.MoveNext Wend RS.Close Set ADOConn = Nothing Set ADOCommand = Nothing Set RS = Nothing
Note: This examples are specific to Exchange Server version 5.5 and below, and are not upwardly compatible with Exchange 6.0. Management and access of Exchange 6.0 Servers should be made through the CDO Exchange Management interfaces instead.