Jul 24 2012

Powershell: Désactiver les appareils ActiveSync non utilisés

Nous allons voir dans ce post comment désactiver les vieux appareils ActiveSync qui ne sont plus utilisés par vos utilisateurs. Il existe déjà pour cela un script proposé sur les forums MS Exchange, mais celui peut ne pas fonctionner dans certains cas:

Prenons un utilisateur situé dans une OU donnée, chaque OU correspond à un site ou région de la société, et voyons les résultats du paramètre identity pour les cmdlets Get-ActiveSyncDevice et  Get-ActiveSyncDeviceStatistics:


Les paramètres identity des deux Cmdlets sont identiques. Supposons maintenant que notre utilisateur soit muté sur un autre site ou région, son compte utilisateur est bougé dans l’OU correspondant à son nouveau site:

L’utilisateur a rendu l’appareil ActiveSync à son ancien site et n’est donc plus utilisé. Lançons les deux cmdlets  Get-ActiveSyncDevice et   Get-ActiveSyncDeviceStatistics et voyons le résultat:

On voit que le paramètre identity de Get-ActiveSyncDevice a été mis à jour avec la nouvelle OU mais pas celui du cmdlet Get-ActiveSyncDeviceStatistics.

Donc si nous appliquons le onliner suivant, qui supprime les appareils qui ne se sont pas connectés depuis 90 jours, alors la suppression se terminera en échec:

Get-ActiveSyncDevice -ResultSize unlimited | Get-ActiveSyncDeviceStatistics | where {$_.LastSyncAttemptTime -lt (get-date).adddays(-30)} | Remove-ActiveSyncDevice

Ceci avec le message d’erreur suivant:

Couldn’t find ‘ldap389.info/BSR2/test-vpn’ as a recipient.
    + CategoryInfo          : InvalidArgument: (:) [Remove-ActiveSyncDevice], RecipientNotFoundException
    + FullyQualifiedErrorId : 2060141F,Microsoft.Exchange.Management.Tasks.RemoveMobileDevice

La solution de contournement est de se baser sur le GUID du paramètre identity, ce paramètre ne changeant jamais et étant commun entre les deux cmdlets Get-ActiveSyncDevice et   Get-ActiveSyncDeviceStatistics, la suppression du device se fera sans problèmes. Donc pour supprimer les appareils qui ne sont pas synchronisés depuis 90 jours utiliser le script suivant:

$guids = Get-ActiveSyncDevice -ResultSize unlimited | Get-ActiveSyncDeviceStatistics | where {$_.LastSyncAttemptTime -lt (get-date).adddays(-90)} | select guid,identity
 
foreach($guid in $guids){
$UniqueID = [string]$guid.guid
remove-activesyncdevice $UniqueID  -confirm:$false}

Les comptes peuvent être déplacés d’OU et la suppression sera tout de même effectuée.

This post is also available in: Anglais

No Comments

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

*

WordPress Themes

Blossom Icon Set

Software Top Blogs