| HOWTO: Enumerate Connected Sites & Servers in Exchange with ADSIID: Q200726 
 | 
The following sample code in Visual Basic illustrates using ADSI LDAP provider objects to enumerate all the connected sites and servers in an Exchange organization. In order to use this code, you must have at least one Exchange 5.5 server in your connected sites. You should also have the latest ADSI client runtime (version 2.0 or better) installed on your system.
' Sample to enumerate sites and servers in an Exchange Organization
' using ADSi objects
   Option Explicit
   Sub Main()
   Dim objOrg As IADsContainer
   Dim objOU As IADsContainer
   Dim objConfig As IADsContainer
   Dim objServers As IADsContainer
   Dim obj As IADs
   ' Replace "Server" with the name of any Exchange 5.5 server in one of
   ' the connected sites you want to enumerate.
   Set objOrg = GetObject("LDAP://Server")
   Debug.Print objOrg.Name
   ' filter passes organizationalUnit and any classes derived from it
   ' such as View-Root
   objOrg.Filter = Array("organizationalUnit")
   For Each objOU In objOrg
    With objOU
    ' Test that the most derived class is organizationalUnit
    If objOU.Class = "organizationalUnit" Then
        Debug.Print "Site: " + .Name
        objOU.Filter = Array("Container")
        For Each objConfig In objOU
            With objConfig
            ' Test for cn=Configuration (root container)
            If .Name = "cn=Configuration" Then
                ' In case configuration might have non-containers
                .Filter = Array("Container")
                For Each objServers In objConfig
                    With objServers
                    ' Test for cn=Servers inside of Configuration container
                    If .Name = "cn=Servers" Then
                        .Filter = Array("Computer")
                        For Each obj In objServers
                            With obj
                            Debug.Print Chr(9) & "Server: " & .Name
                            Debug.Print Chr(9) & "ADsPath: "; .ADsPath
                            End With
                        Next obj
                    End If
                    End With
                Next objServers
            End If
            End With
        Next objConfig
    End If
    End With
   Next objOU
   Debug.Print "End Enumeration"
   End Sub 
Information on ADSI version 2.0 is included in the Platform SDK section of MSDN after October 1997. ADSI is also available on the following Web site: 
http://www.microsoft.com/ntserver/windowsnt5/exec/feature/ActiveDir.asp
Additional query words:
Keywords          : kbAPI kbEDK kbMsg NtwkADSI 
Version           : WINDOWS:5.0,5.5; winnt:2.0,5.5
Platform          : WINDOWS winnt 
Issue type        : kbhowto Last Reviewed: June 15, 1999