VBScript: Find All Exchange Servers in Active Directory

Filed under: Active Directory, Exchange, Quick Code, VBScript — Written by Chrissy on Tuesday, January 9th, 2007 @ 7:44 pm

My friend Sharfa and I were exchanging some of our favorite code snippets and he showed me one for enumerating Exchange Servers in Active Directory. I dug the code but wanted to try to see if I could use my Recordset/ADsDSOObject skrills to shorten the code. The outcome isn't any shorter but it does get the version, so that's cool. Thanks, Sharfa, for pointing me towards the WMI Exchange_Server thing, too. :-D

Hit It

'****************************************************************************
' This script created by Chrissy LeMaire (clemaire@gmail.com)
' Website: http://netnerds.net/
'
' This script finds all Exchange Servers in AD. Includes Exchange Version.
'
' Run this script with admin privs on any computer within a domain.
'
' This script has only been tested on Windows Server 2003
'
' NO WARRANTIES, USE THIS AT YOUR OWN RISK, etc.
'*****************************************************************************
 
Set objAdRootDSE = GetObject("LDAP://RootDSE")
Set objRS = CreateObject("adodb.recordset")
 
  varConfigNC = objAdRootDSE.Get("configurationNamingContext")
 
  strConnstring = "Provider=ADsDSOObject"
  strSQL = "SELECT * FROM 'LDAP://" & varConfigNC & "' WHERE objectCategory='msExchExchangeServer'"
  objRS.Open strSQL, strConnstring
    Do until objRS.eof
      Set objServer = GetObject(objRS.Fields.Item(0))
        Call getExchangeInfo(objServer.CN)
      Set objServer = Nothing
      objRS.movenext
    Loop
  objRS.close
 
Set objRS = Nothing
Set objAdRootDSE = Nothing
 
Sub getExchangeInfo(strServerName)
  Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!" & strServerName & "\ROOT\MicrosoftExchangeV2")
  Set colItems = objWMIService.ExecQuery("Select * from Exchange_Server")
 
    For Each objItem in colItems
      MsgBox UCase(objItem.Name) & " (" & objItem.FQDN & ") is running Exchange " & objItem.ExchangeVersion
    Next
 
  Set colItems = Nothing
  Set objWMIService = Nothing
End Sub
  -

No comments yet. Be the first to comment this post.

Leave your comment