Lors de mon dernier post sur les téléphones mobiles et Exchange 2010 SP1 (http://blogs.technet.com/b/dcaro/archive/2010/12/03/connecter-un-windows-phone-7-224-exchange-2010-sp1.aspx), j'ai abordé les éléments nécessaires pour préparer son déploiement ainsi que la phase pilote qui précède une opération à large échelle.

Dans cet article, je vous propose de regarder comment il est possible de gérer le déploiement de téléphone mobiles avec Exchange 2010 SP1 et Windows Phone 7. Une des contraintes que l'on rencontre dans les grands groupes est la capacité à associer de façon forte un périphérique avec une boite aux lettres. Exchange 2010 SP1 apporte une série de commandes powershell permettant de piloter précisément les périphériques ActiveSync connectés à une organisation Exchange.

  1. Politique globale de l'organisation

Par défaut, tout périphérique ActiveSync peut se connecter à une organisation Exchange. C'est l'information que l'on obtient à travers le cmdlet suivant :

Get-ActiveSyncOrganizationSettings

L'article suivant vous donne plus d'informations sur le sujet : http://technet.microsoft.com/en-us/library/dd876925.aspx. Il est possible de modifier le comportement par défaut de l'organisation pour que tout périphérique se connectant à l'organisation soit mis en quarantaine. Lors de cette mise en quarantaine, on peut notifier en même temps un ou plusieurs utilisateurs identifiés. Dans mon environnement, j'ai positionné une telle politique avec notification de l'administrateur.

Le cmdlet à executer est :

Set-ActiveSyncOrganizationSettings –DefaultAccessLevel Quarantine - AdminMailRecipients administrator@ucdemo.com

Le résultat donne ceci sur mon environnement de démonstration :

Au moment de la mise en quarantaine d'un périphérique, l'administrateur reçoit un mail de ce type :

  1. Valider l'accès du périphérique en question

Pour donner l'accès au système à ce périphérique, il faut lui donner accès au moins à une boite aux lettres du système. Avec Exchange 2010, chaque boite aux lettres peut avoir une configuration ActiveSync spécifique qui permet à l'administrateur de piloter le comportement de la boite aux lettres vis-à-vis d'un client ActiveSync. Les paramètres que l'on peut positionner sont :

  • ActiveSyncAllowedDeviceIDs: Définit la liste des identifiants de téléphones qui sont autorisés à se connecter sur la boite aux lettres.
  • ActiveSyncBlockedDeviceIDs : Définit la liste des identifiants de téléphones qui ne sont pas autorisés à se connecter sur la boite aux lettres.
  • ActiveSyncDebugLogging : Spécifie si le mode de trace est activé sur ActiveSync à des fins de support et de troublehsooting.
  • ActiveSyncEnabled : Spécifie si l'accès ActiveSync est autorisé pour cette boite aux lettres
  • ActiveSyncMailboxPolicy : Pointe vers la stratégie ActiveSync à appliquer à cette boite aux lettres.

Comme dans notre exemple, on souhaite être déterministe concernant le périphérique autorisé à se connecter à une boite aux lettres, nous allons utiliser pour cela le paramètre ActiveSyncAllowedDeviceIDs. La ligne de commande suivant ne va autoriser que le prériphérique avec l'ID indiqué à se connecter à la boite aux lettres de démonstration :

Set-CASMailbox –Identity dcaro –ActiveSyncAllowedDeviceIDs 12345678901234567890123456789012

Une fois la commande appliquée, voici le résultat sur une boite aux lettres :

Si vous voulez en savoir plus sur le cmdlet en question vous pouvez consulter l'article suivant : http://technet.microsoft.com/en-us/library/bb125264.aspx

Nous avons ainsi permis au périphérique de démonstration de se connecter à la boite aux lettres "dcaro".

  1. Comment trouver le DeviceID d'un téléphone ?

Toutes les opérations que nous avons faites jusqu'à présent utilisent le DeviceID du téléphone or régulièrement, les opérateurs identifient le téléphone avec le numéro IMEI. La question est donc comment trouver le DeviceID d'un téléphone quand on connait son numéro IMEI ?

Si vous cherchez sur le web, pour Windows Phone 7, il existe une API qui remonte un DeviceUniqueID (http://msdn.microsoft.com/en-us/library/ff941122(VS.92).aspx) mais cette information est différente de celle qui est utilisée par Exchange.

La seule option envisageable est donc de regarder l'information coté Exchange. En effet, une fois que le périphérique se soit connecté une première fois, même si il est mis en quarantaine, on peut obtenir des informations le concernant via le cmdlet suivant :

Get-ActiveSyncDevice

Le résultat de ce cmdlet sur mon environnement de démonstration donne ceci :

L'intérêt de la commande en question est de pouvoir sortir le contenu sous former de tableau avec uniquement le DeviceID et le DeviceIMEI. Il est même possible de récupérer le DeviceID dans une variable à partir du DeviceIMEI.

Voici donc un script qui prends en argument le numero IMEI du téléphone suivi de l'alias de la boite aux lettres à laquelle le périphérique doit être associé et qui effectue l'association :

$DeviceIMEI = $Args[0]
$UserMbx = $Args[1]
Get-ActiveSyncDevice | Where-Object {$_.DeviceImei -eq $DeviceIMEI} | foreach {Set-CASMailbox -Identity $userMbx -ActiveSyncAllowedDeviceIDs $_.DeviceID}

Le script effectue les opérations suivantes :

  1. On obtient l'ensemble des périphériques ActiveSync qui ont comme identifiant IMEI celui passé en argument du script
  2. On modifie les propriétés de la boite aux lettres par le cmdlet Set-CASMailbox pour mettre ce périphérique dans la liste des périphériques autorisés.

L'utilisation du foreach ne se justifie pas particulièrement dans ce cas mais simplifie l'écriture de la ligne de commande. De même je ne vérifie pas si une valeur existe déjà ou pas. Cela fait partie des améliorations qui peuvent être apportées à cet exemple avant d'être mis en production.

Bon déploiement de Windows Phone 7 et d'Exchange 2010 !