Finding the Home Server/Store for a Mailbox with ADSI

Finding the Home Server/Store for a Mailbox with ADSI

This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.

Visual Basic

' Finding the Home Server/Store for a Mailbox with ADSI
' The following sample will query Active Directory for a given mail user
' and return the Home Server/Storage Group/MDB for that mailbox.
' This code can be run from any Windows 2000 or DSCLient computer.
'
' Visual Basic Project References
'  - Microsoft ActiveX Data Objects 2.5 Library
'  - Active DS Type Library


Sub UserInfo()

Dim iAdRootDSE As ActiveDs.IADs
Dim Conn As New ADODB.Connection
Dim Com As New ADODB.Command
Dim Rs As ADODB.Recordset
Dim varDomainNC As Variant
Dim strQuery As String
Dim strAlias As String
Dim varOwningServerDN As Variant
Dim iAdHomeMDB As ActiveDs.IADs
Dim iAdStorageGroup As ActiveDs.IADs
Dim iAdServer As ActiveDs.IADs

' Change to the alias of the mailbox you are looking for.
strAlias = "user1"

' Get the configuration naming context.
Set iAdRootDSE = GetObject("LDAP://RootDSE")
varDomainNC = iAdRootDSE.Get("defaultNamingContext")

' Open the connection.
Conn.Provider = "ADsDSOObject"
Conn.Open "ADs Provider"

' Build the query to find the user based on the alias.
strQuery = "<LDAP://" & varDomainNC & ">;(mailNickName=" & strAlias & ");name,homeMDB;subtree"

Com.ActiveConnection = Conn
Com.CommandText = strQuery
Set Rs = Com.execute

' Iterate through the results.
While Not Rs.EOF

' Retrieve the home MDB for the mailbox.
Set iAdHomeMDB = GetObject("LDAP://" & Rs.Fields("homeMDB"))

' Get the parent of the MDB, which is the storage group.
Set iAdStorageGroup = GetObject(iAdHomeMDB.Parent)

' Find the server that owns the MDB.
varOwningServerDN = iAdHomeMDB.Get("msExchOwningServer")
Set iAdServer = GetObject("LDAP://" & varOwningServerDN)

MsgBox "The mailbox store for " & Rs.Fields("name") & " is located : " & _
vbLf & iAdServer.Get("cn") & "/" & iAdStorageGroup.Get("cn") & _
"/" & iAdHomeMDB.Get("cn")

Set iAdServer = Nothing
Set iAdStorageGroup = Nothing
Set iAdHomeMDB = Nothing

Rs.MoveNext
Wend

' Clean up.
Rs.Close
Conn.Close
Set Rs = Nothing
Set Com = Nothing
Set Conn = Nothing
End Sub

Send us your feedback about the Microsoft Exchange Server 2003 SDK.

Build: June 2007 (2007.618.1)

© 2003-2006 Microsoft Corporation. All rights reserved. Terms of use.