• 1. London, UK
  • 2. New York, NY
  • 3. Sydney, Australia
  • 4. Melbourne, Australia
  • 5. Paris, France
  • 6. Mumbai, India
  • 7. Moscow, Russia
  • 8. Bangalore, India
  • 9. San Francisco, CA
  • 10. Amsterdam, The Netherlands

Friday, June 20, 2008

 

Exchange Server 2007: Listing Exchange ActiveSync users and device information

Posted by Bharat Suneja at 8:35 AM
In How to get a list of Exchange ActiveSync users we list EAS users on Exchange 2007. Some users may have more than 1 device, or perhaps the user simply got a new smartphone and the old device partnership has not been removed.

Output from Get-ActivesyncDeviceStatistics -mailbox foo@somedomain.com:


FirstSyncTime : 12/22/2007 1:34:10 AM
LastPolicyUpdateTime : 12/22/2007 1:34:43 AM
LastSyncAttemptTime : 1/14/2008 7:45:15 AM
LastSuccessSync : 1/14/2008 7:45:15 AM
DeviceType : PocketPC
DeviceID : *******************************
DeviceUserAgent :
DeviceWipeSentTime :
DeviceWipeRequestTime :
DeviceWipeAckTime :
LastPingHeartbeat :
RecoveryPassword : ********
DeviceModel : WIZA100
DeviceIMEI : ************21900
DeviceFriendlyName : Pocket_PC
DeviceOS : Windows CE 5.2.19134
DeviceOSLanguage : English
DevicePhoneNumber : 1650*******
Identity : foo@somedomain.com\AirSync-PocketPC-*******************************

The * characters in the Identity field are for the DeviceID.

Here's a a quick code snippet (it can probably be scrubbed up a little... ) that will list users and all their devices, along with first sync and last successful sync times:

$mbx = get-casmailbox | where {$_.hasactivesyncdevicepartnership -eq $true -and $_.identity -notlike "*CAS_{*"} ; $mbx | foreach {$name = $_.name; $device = get-activesync devicestatistics -mailbox $_.identity; $device | foreach {write-host $mbx.name, $_.devicemodel, $_.devicephonenumber, $_.deviceid, $_.FirstSyncTime, $_.LastSuccessSync} }


Update: 10/2/2008:
Making it more efficient: Filtering on the server-side using -Filter
Well, the above code could be scrubbed up a little. Rather than getting all mailboxes using Get-CASMailbox and filtering them on the client-side using the Where-Object cmdlet, a more efficient way of doing this is filtering on the server-side using the -Filter parameter, and getting only the mailboxes which have an ActiveSync device partnershp.

Yes, I've just realized HasActiveSyncDevicePartnership is in fact a filterable property, listed under Advanced Filterable Properties in Filterable Properties for the -Filter Parameter in Exchange 2007 SP1.

Here's the updated version:

$mbx = get-casmailbox -Filter {HasActivesyncDevicePartnership -eq $true -and -not DisplayName -like "CAS_{*"}; $mbx | foreach {$name = $_.name; $device = get-activesync devicestatistics -mailbox $_.identity; $device | foreach {write-host $mbx.name, $_.devicemodel, $_.devicephonenumber, $_.deviceid, $_.FirstSyncTime, $_.LastSuccessSync} }

The output looks like this:

Bharat Suneja WIZA100 16501231234 353B7ACF5014C020CE22CBF1DB7FFD92 11/5/2007 7:41:29 AM 12/20/2007 11:00:15 PM
Bharat Suneja WIZA100 16501231234 7E6B67F47DFD370E89BE13280A75EAA5 12/22/2007 1:34:10 AM 1/14/2008 7

Labels: , ,

9 Comments:

October 8, 2008 4:03 PM
Anonymous Anonymous said...

Is there a shell command that will list all the users that have a mobile device and what the DeviceFriendlyName is? I know you can do it by mailbox using the command Get-ActiveSyncDeviceStatistics -Mailbox: "alias" however, I need to provide a list to management of what kinds of phones are connecting and from which department.
I did post this question on the Microsoft.Public.Exchange.Mobility newsgroup called "Shell command for all mobile devices?" However, I didn't receive a answer so John Oliver, Jr. [MVP] suggested that I contact you through your blog. Any help you can provide is appreciated

Thanks.
Penny

 
October 8, 2008 4:21 PM
Blogger Bharat Suneja said...

@Penny: The above command will get you the output you need. DeviceFriendlyName is one of the parameters output by Get-ActiveSynCDeviceStatistics.

Use this:
$mbx=get-casmailbox -Filter {HasActiveSyncDevicePartnership -eq $true -and -not Disp
layName -like "CAS_{*"};
$mbx | foreach {$name = $_.name; $identity = $_.identity; $device=get-activesyncdevi
cestatistics -mailbox $_.identity; $device | foreach {write-host $mbx.name, $_.devicefriendlyname, $
_.devicemodel, (get-user $identity).department} }

You can add additional fields such as first sync/last sync times or phone numbers as shown in the post.

 
October 8, 2008 5:44 PM
Anonymous Anonymous said...

That gets me in the right directions, thank you. I'm going home now so I'll work with this script again in the morning.

Penny

 
October 16, 2008 12:37 PM
Anonymous Anonymous said...

Any idea why I can never get a display name back as you have it?

Seems as if the $mbx.name portion is always blank.

Thanks

Jon

 
October 17, 2008 6:28 AM
Blogger tylergohl said...

I wasn't able to get the DisplayName or the Mailbox to show for me either, but the "Identity" property worked for me. Try this:

$mbx = get-casmailbox -Filter {HasActivesyncDevicePartnership -eq $true -and -not DisplayName -like "CAS_{*"}; $mbx | foreach {$name = $_.name; $device = get-activesyncdevicestatistics -mailbox $_.identity; $device | foreach {write-host $mbx.name, $_.devicemodel, $_.devicephonenumber, $_.Identity, $_.deviceid, $_.FirstSyncTime, $_.LastSuccessSync} }


-- The addition of $_.Identity gave me what I needed. I don't know if this is the best way to go about getting it, maybe the original poster might know! ;) Seems like $mbx.name is intended to give the information we need, but doesn't seem to be working for me and the poster above me.

 
March 24, 2009 8:49 AM
Anonymous Anonymous said...

Does the –Filter applies to only Get-CasMailbox on the server side processing or does it also applies to pipelined cmd-let Get-ActiveSyncDeviceStatistics?

Since Get-ActiveSyncDeviceStatistics does not directly support –Filter I am not sure where the actual processing takes place.

 
March 24, 2009 8:57 AM
Blogger Bharat Suneja said...

@Anonymous from March 24: The filter applies to Get-CASMailbox, which returns a set of mailboxes after filtering it on server-side. You iterate through each mailbox returned (using the foreach), passing it on individually to Get-ActiveSyncDeviceStatistics.

 
March 24, 2009 2:09 PM
Anonymous Anonymous said...

But does the processing of "Get-ActiveSyncDeviceStatistics"
takes place on the client host CPU or the Server CPU?

@Anonymous from March 24:

 
June 17, 2009 7:06 AM
Blogger shali said...

How to filter the active sync users with department names?

 

Post a Comment

Links to this post:

Create a Link

<< Home