Article ID: 200726
Article Last Modified on 7/11/2005
' 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
Keywords: kbhowto kbapi kbmsg kbdswmanage2003swept KB200726