VBScript: Find All Exchange Servers in Active Directory

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

'**************************************************************************** ' This script created by Chrissy LeMaire ([email protected]) ' Website: https://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