Office 365 – Exchange : obtenir le « Last Logon Time » des utilisateurs

I. Présentation

Obtenir la date de dernière connexion de vos utilisateurs sur leur boite e-mail Office 365 est un excellent moyen de voir l'activité de vos utilisateurs sur Exchange Online. C'est aussi un bon moyen d'identifier des utilisateurs inactifs, qui seront peut être à supprimer de votre tenant. L'occasion également de récupérer quelques licences et donc de faire quelques économies... Bien sûr, l'objectif n'est pas de tracker les utilisateurs non plus... Restons correct.

Pour obtenir cette information, on utilisera le cmdlet Get-MailboxStatistics car il contient la propriété "LastLogonTime".

II. Obtenir la dernière connexion d'un utilisateur unique

Pour savoir à quand remonte la dernière connexion d'un utilisateur spécifique, on utilisera la commande suivante :

Get-MailboxStatistics -Identity <UPN-de-l-utilisateur> | Select-Object DisplayName,LastLogonTime

Ce qui nous donnera une information précise :

Maintenant, voyons comment faire un export complet pour tous les utilisateurs.

III. Obtenir la date de dernière connexion de tous les utilisateurs

On va utiliser le cmdlet "Get-Mailbox" afin de récupérer la liste de toutes les boites aux lettres. On va ensuite piper cette commande avec "Get-MailboxStatistics" pour obtenir les infos de dernière connexion sur chaque boite aux lettres.

Ce qui nous donne :

Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Select-Object DisplayName,LastLogonTime

En fonction de la quantité de compte sur votre tenant, le résultat peut prendre un certain temps avant de s'afficher.

Note : Il est à noter que le cmdlet Get-MailboxStatistics peut aussi être utilisé pour connaître le nombre d'e-mails contenu dans chaque mailbox de votre tenant.

IV. Exporter la liste des utilisateurs qui ne se sont jamais connectés

Maintenant, si l'on veut mettre tout cela en forme, on peut rédiger un petit script sympathique qui va nous retourner la liste des utilisateurs qui ne se sont pas encore connecté à Office 365. Il est à noter que la première étape consiste à récupérer la liste de toutes les mailbox du tenant, en fonction du nombre de comptes l'exécution de cette commande peut être longue.

On va créer un tableau d'objets nommé "$UsersNeverLogon" et qui pourra contenir différentes propriétés. Dans cet exemple, je stocke seulement une donnée : le nom d'affichage du compte (DisplayName).

La propriété "LastLogonTime" indique à quand remonte la dernière connexion d'un utilisateur, donc si cette valeur est vide c'est que l'utilisateur ne s'est pas encore connecté.

Au total, cela nous donne le code suivant :

$UsersNeverLogon = @()

$MailboxLastLogonTime = Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Select-Object DisplayName,LastLogonTime

Foreach($Mailbox in $MailboxLastLogonTime){

    if($Mailbox.LastLogonTime -eq $null){

       Write-Output "$($Mailbox.DisplayName) ne s'est jamais connecté !"

       $UsersNeverLogon += New-Object PSObject -property @{ 

         Name = $Mailbox.DisplayName
       }
    }
}

$UsersNeverLogon | Export-Csv -Path "C:\Exports\O365_UsersNeverLogon.csv" -Delimiter ";" -NoTypeInformation

La dernière ligne de ce bout de code exporter le contenu de notre tableau dans un fichier CSV nommé "0365_UsersNeverLogon.csv".

Maintenant libre à vous d'utiliser ce code tel qu'il est présenté ici ou de l'améliorer ! 🙂

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5502.Voir tous les posts

2 thoughts on “Office 365 – Exchange : obtenir le « Last Logon Time » des utilisateurs

Répondre à PerF Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.