$strX400Search = "X400:"
$strOutputFile = "D:\proxyaddresses.csv"
$objRootDSE = GetObject("LDAP://rootDSE")
$strDNSDomain = $objRootDSE.Get("defaultNamingContext")
;Set the ADO connection query strings
$QueryPath ="" + $strDNSDomain
$strFilter = "(&(proxyAddresses=*))"
$strAttributes = "adspath"
;Start the ADO connection
$objCommand = CreateObject("ADODB.Command")
$objConnection = CreateObject("ADODB.Connection")
$objConnection.Provider = "ADsDSOObject"
$objConnection.Open("Active Directory Provider")
$objCommand.ActiveConnection = $objConnection
;Create the Query
$strQuery = "<LDAP://" + $QueryPath + ">;" + $strFilter + ";" + $strAttributes + ";subtree"
$objCommand.CommandText = $strQuery
$objCommand.Properties("Page Size").value = 1000
$objCommand.Properties("Timeout").value = 30
$objCommand.Properties("Cache Results").value = 0
$objRecordSet = $objCommand.Execute
$objCount = 0
;objCount = $objRecordSet.RecordCount '<--not possible when 'caching results' is false
$addrCount = 0
$objRecordSet.MoveFirst
;Get the emailaddresses of all Items with a proxyaddress in the domain
While Not $objRecordset.EOF
$objCount = $objCount + 1
$strItemPath = $objRecordSet.Fields("AdsPath").Value
$objItem = GetObject($strItemPath)
$strObjClass = $objItem.class
$ProxyAddresses = $objItem.proxyAddresses
For Each $Proxy in $ProxyAddresses
If Not InStr(UCase($Proxy), $strX400Search)
$emailaddres = "present"
$addrCount = $addrCount + 1
$x = SubStr($proxy,1,4)
Select
CASE $x == UCASE("smtp")
$emailaddres = SubStr($proxy,6) + ",Primary"
CASE $x == LCASE("smtp")
$emailaddres = SubStr($proxy,6) + ",Secondary"
EndSelect
$strResult = $strResult + @Crlf + $strObjClass + "," + chr(34) + $objItem.distinguishedName + chr(34) + "," + $emailaddres
EndIf
Next
$objRecordSet.MoveNext
Loop
;Output to a text file
$objFileSystem = CreateObject("Scripting.FileSystemObject")
$objOutputFile = $objFileSystem.CreateTextFile($strOutputFile)
$objOutputFile.Write("objectClass,DistinguishedName,Emailaddress,pri/sec address,'")
$objOutputFile.Write($strResult)
$objOutputFile.close
? "Counted: " + $objCount + " records and " + $addrCount + " emailaddresses"