Updated 21/04/2012: Windows 2008+ compatible script uploaded and verified working against Exchange 2007 and Exchange 2010
When you’re moving from Exchange 2007 to Exchange 2010 there are a few gotchas that it’s worth watching out for in the planning stages before you change over Client Access Namespaces or start migrating Mailboxes. If you don’t you might find you have broken Exchange 2007 clients, due to the CAS changes, and find some clients can’t connect after their mailboxes are migrated.
When it comes to the Windows version of Outlook, you can find out about currently logged-in clients using the Get-LogonStatistics command; however you also need to be aware of other clients using protocols like ActiveSync, Exchange Web Services and of course WebDAV.
ActiveSync clients will mostly be fine with CAS Namespace changes, as depending on version they should be automatically proxied from Exchange 2010 back to Exchange 2007 or should autodiscover; however some clients like the iPhone don’t work properly and you need to consider a workaround.
Exchange Web Services clients, for the most part, shouldn’t have issues thanks to AutoDiscover, however it’s good to understand what clients you have out there already so you can test and plan for any issues. There’s a number of iPhone apps that use EWS out there that your users may have bought and I’ve seen some funny issues myself with the EWS version Mac Mail on Snow Leopard that may require a client visit.
Finally, WebDAV. There’s little to explain about WebDAV apart from it’s not supported in Exchange 2010! You need to find these clients (think Entourage 2004 and 2008) and upgrade them.
Unfortunately there isn’t anything built-in to Exchange 2007 or 2010 to examine this data, but the good news is it should all be available to you via the IIS log files. Whilst logparser is pretty good, personally I wanted the data collected and grouped all in one go ready to use. And that’s where this script came from…
What information does the script output provide?
The output from the script is in CSV format, so it’s easy to use in Excel for further data processing. The CSV file itself has the following fields:
Username: Logon name of the user
ActiveSyncUser: If the user uses an ActiveSync mobile device
ActiveSyncProxyUser: If the user is currently being proxied through to this client access server
ActiveSyncClients: A semi-colon separated list of the clients in use, eg. iPad;htchero;
ActiveSyncLastAccess: Last date found for ActiveSync use
EWSUser: If the user uses some sort of Exchange Web Services client
EWSPCOutlook: Version information if the user has the Windows version of Outlook 2007 or 2010
EWSMacMail: Version information if user has the EWS version of Mac Mail
EWSMacOutlook: Version information if the user has Mac Outlook 2011
EWSEntourage: Version information if the user has Entourage 2008, Web Services Edition
EWSOther: A semi-colon separated list of any other EWS clients the user has
EWSLastAccess: Last date found for EWS use
WebDavUser: If the user uses some sort of WebDAV Exchange client
WebDavClient: A semi-colon separated list of WebDAV client software and versions in use
WebDavLastAccess: Last date found for WebDAV use
In an actual export, the above looks a little bit like this (apart from the blurry usernames!)
How to use the script
Example one – Parses log files from the default log directory “C:\WINDOWS\system32\LogFiles\W3SVC1” to “C:\output.csv”
Example two – Parses the last 30 days of log files from the current directory to cas_results.csv in the current directory, and saves the state to state.xml in the current directory (could take a LONG time!)
ExIISLogParser.ps1 -LogFilePath "." -Days 30 -OutputCSVFile ".\cas_results.csv" -SaveStateFile ".\state.xml"