15/11/2024

Office 365PowerShell

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 ! 🙂

author avatar
Florian BURNEL Co-founder of IT-Connect
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.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “Office 365 – Exchange : obtenir le « Last Logon Time » des utilisateurs

  • Tout d’abord merci à monsieur Brunel pour cette article qui m’a été très utile !

    Pour ceux que ça intéresse voici une variante du script finale qui permettra d’exporter sous format csv la liste des utilisateurs ne s’étant pas connecté depuis une certaines date (2020 dans mon exemple) :

    $UsersNotLoggedInSince2020 = @()

    # Get the current date and set the cutoff date to January 1, 2020
    $cutoffDate = Get-Date -Year 2020 -Month 1 -Day 1

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

    foreach($Mailbox in $MailboxLastLogonTime) {
    if($Mailbox.LastLogonTime -eq $null -or $Mailbox.LastLogonTime -lt $cutoffDate) {
    Write-Output « $($Mailbox.DisplayName) ne s’est jamais connecté depuis 2020 ! »

    $UsersNotLoggedInSince2020 += New-Object PSObject -property @{
    Name = $Mailbox.DisplayName
    }
    }
    }

    $UsersNotLoggedInSince2020 | Export-Csv -Path « C:\Exports\O365_UsersNotLoggedInSince2020.csv » -Delimiter « ; » -NoTypeInformation

    Vous pouvez l’adapter à votre sauce en modifiant les champs `cutoffdate` en fonction de votre besoin.

    Répondre

Laisser un commentaire

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.