Steve Goodman's Exchange Blog
2Feb/123

iPhone with Exchange 2010 – Business Integration and Deployment available for pre-order now

imageI am pleased to announce that my forthcoming book, iPhone with Exchange Server 2010 - Business Integration and Deployment is now available for pre-order, after what seems like an endless wait!

Right now, we're finishing off the technical reviewing process, where feedback from Exchange MCMs and MVPs, primarily Henrik Walther and Jeff Guillet has been invaluable (and given me a lot of confidence that it's a great book!)  - so once again a massive thanks for their help, as well as Packt Publishing.

Available for pre-order on the Packt website right now, the book is aimed at both IT professionals with little Exchange experience who have been tasked with implementing Exchange 2010 (or Office 365) and iPhones or iPads into their employer's business. With more complex topics such as provisioning and certificate-based authentication, seasoned Exchange admins will also find a lot of in-depth information filling in the large gaps between the Exchange Server and Apple documentation.

Taken from the "What you will learn" overview I put together for Packt, here's a quick bullet-point list of the types of topics covered:

  • The roles and features of Exchange Server 2010
  • Capacity planning for an Exchange environment and how to plan a new installation
  • Certificate and namespace requirements for an external facing Exchange organization
  • Install Exchange Server 2010 and build a database availability group
  • Why you should consider Office 365 and what's involved in getting it set up
  • Use policies to control what users can do with iDevices connected to Exchange
  • Why certificate authentication can make your life easier and how to set it up
  • Use Apple's iPhone Configuration Utility to create and deploy configuration profiles to mobile devices
  • What's involved with sharing mailboxes and calendars with Apple devices
  • Troubleshooting and managing devices in use

Read more about the book and pre-order on the Packt website..

5Dec/110

Exporting Exchange 2010 ActiveSync statistics for iOS Devices

image

When exporting ActiveSync statistics from your Exchange Server 2010 environment, you've got a number of options, including using the Export-ActiveSyncLogs cmdlet to parse IIS log files and produce a number of CSV reports to help understand the way your ActiveSync devices are being used, the use of Device troubleshooting logs to retrieve client-side logs on a user-by-user basis to help diagnose issues, and use of the Get-ActiveSyncDeviceStatistics cmdlet to interrogate the information stored by Exchange and Active Directory about each ActiveSync device partnership.

The final option is what provides the foundation for this script, however when just exporting information on it's own the built in cmdlet doesn't interpret the information encoded in the User Agent string that helps understand what versions of iOS are in use across your business. Therefore as well as exporting the data from Exchange, this script maps the information stored in Exchange to iOS versions.

Usage:

.\Export-MessageTrackingLogsForRecipient.ps1 -OutputCSVFile C:\output.csv

Example Output:

1482-09-08

Script (downloadable below)

#    .SYNOPSIS
#    Generates a CSV file containing ActiveSync Device Statistics with iOS Specific Information.
#  
#    .PARAMETER OutputCSVFile
#    Filename to save the output CSV file as
#  
#    .EXAMPLE
#    .\Export-MessageTrackingLogsForRecipient.ps1 -OutputCSVFile C:\output.csv
param(
    [parameter(Position=1,Mandatory=$true,ValueFromPipeline=$false,HelpMessage="Output CSV File Name")][string]$OutputCSVFile
    )
# The following is a Hash Table containing information used to
# map the Apple Device User Agent to it's corresponding iOS version
$iOSVersions=@{"508.11"="2.2.1";
        "701.341"="3.0.0";
        "701.400"="3.0.1";
        "702.367"="3.2";
        "702.405"="3.21";
        "702.5"="3.3";
        "703.144"="3.1";
        "704.11"="3.1.2";
        "705.18"="3.1.3";
        "801.293"="4.0.0";
        "801.306"="4.0.1";
        "801.400"="4.0.2";
        "802.117"="4.1";
        "803.148"="4.2.1";
        "806.190"="4.3";
        "806.191"="4.3";
        "807.4"="4.3.1";
        "808.7"="4.3.2";
        "810.2"="4.3.3";
        "811.2"="4.3.4";
        "812.1"="4.3.5";
        "901.334"="5";
        "901.403"="5.0.1";
        "901.405"="5.0.1"}
# Retrieve mailboxes of users who have a connected ActiveSync Device
$CASMailboxes = Get-CASMailbox -Filter {hasactivesyncdevicepartnership -eq $true -and -not displayname -like "CAS_{*"} -ResultSize Unlimited;
[array]$Mailboxes = $CASMailboxes | Get-Mailbox;
# Create an array to store the output
$Output=@();
# Perform a set of actions against each mailbox retrieved
foreach ($Mailbox in $Mailboxes)
{
    # Retrieve the ActiveSync Device Statistics for the associated user mailbox
    [array]$ActiveSyncDeviceStatistics = Get-ActiveSyncDeviceStatistics -Mailbox $Mailbox;
    # Use the information retrieved above to store information one by one about each ActiveSync Device
    foreach ($Device in $ActiveSyncDeviceStatistics)
    {
        # Where possible use the information stored in the Device User Agent to understand the iOS device version in use
        $iOSVersion = "N/A";
        if ($Device.DeviceUserAgent -like "*/*") {
            $rawiOSVersion = ($Device.DeviceUserAgent).Substring(($Device.DeviceUserAgent).IndexOf("/")+1);
            if ($iOSVersions[$rawiOSVersion])
            {
                $iOSVersion = $iOSVersions[$rawiOSVersion];
            }
        }
        # Create a new object to store this ActiveSync device information in our CSV file
        $OutputItem = New-Object Object;
        # Add information to the object
        $OutputItem | Add-Member NoteProperty Username $Mailbox.SamAccountName;
        $OutputItem | Add-Member NoteProperty "Display Name" $Mailbox.DisplayName;
        $OutputItem | Add-Member NoteProperty "Device Type" $Device.DeviceType;
        $OutputItem | Add-Member NoteProperty "Device Model" $Device.DeviceModel;
        $OutputItem | Add-Member NoteProperty "iOS Version" $iOSVersion;
        $OutputItem | Add-Member NoteProperty "Device ID" $Device.DeviceID
        $OutputItem | Add-Member NoteProperty "Status" $Device.Status
        $OutputItem | Add-Member NoteProperty "ActiveSync Policy" $Device.DevicePolicyApplied
        $OutputItem | Add-Member NoteProperty "ActiveSync Policy Status" $Device.DevicePolicyApplicationStatus
        $OutputItem | Add-Member NoteProperty "Last Sync" $Device.LastSuccessSync
        $OutputItem | Add-Member NoteProperty "Last Sync Attempt" $Device.LastSyncAttemptTime
        $OutputItem | Add-Member NoteProperty "Last Policy Update" $Device.LastPolicyUpdateTime
        $OutputItem | Add-Member NoteProperty "First Sync" $Device.FirstSyncTime
        # Add the object to our array of output objects
        $Output += $OutputItem;
    }
}
# Print the output object to the screen in a table format with a subset of details for ease of reading
$Output | Format-Table Username,"Device Type","Device ID","Last Sync"
# Export the full set of data to the specified CSV file
$Output | Export-CSV -Path $OutputCSVFile -NoTypeInformation

Version 1.0, 5th December 2011

Download ExportActiveSyncDeviceStatistics.zip

8Nov/112

Quiet on the blog, busy behind the scenes…

It’s been a few weeks since my last post on the blog, and although I haven’t published any articles over the last few weeks, I thought I should check in and share what I’ve been up to.

First and foremost, I’m now into my second month at my new employer, ICM (formerly known as Servo), working in their Microsoft Practice as a Technical Architect. My new role is both design and implementation, working with the same kind of technology I write about on my blog, Exchange and Office 365; along with other technologies I specialise in including Active Directory and Virtualization.

Whilst it’s a bit of a change to go back to working for a reseller after spending a large chunk of my IT career managing a team of system administrators and large server infrastructure, I’m glad to have made the move back to the reseller side, which is after all where it all began for me over ten years ago. Over the last month or so it’s been refreshing to see a lot more of the UK and work with a variety of different customers on some very interesting projects.

So, that’s the first thing that’s been keeping me busy. Second up is something I’ve been keeping close to my chest for a while, but it’s time to let the cat out of the bag. Since July this year I’ve been quietly beavering away on my first book, iPhone with Exchange Server 2010 – Business Integration and Deployment.

The book’s being published by Packt publishing, the same technology publisher behind Mike Pfeiffer’s Exchange 2010 PowerShell Cookbook, and is scheduled for release in a couple of months time. Before then, Packt are planning an early release through their RAW program. RAW allows early access to new books from the publisher, along with a final copy once the editorial process is complete. As you might expect, when it’s available for pre-order I’ll be making sure it’s publicised here.

And finally, the blog! Well, don’t worry – I have a few good blog posts up my sleeve coming this November, and once Exchange Server 2010 SP2 is released (approximately 4-6 weeks from now) you’ll be able to find out more about some of the new features, and how to use them right here.

Till later..