Rapport HTML interactif des versions Microsoft Outlook connectées à un environnement Microsoft Exchange (2013 / 2016 / 2019 / SE), avec identification exacte des builds, détection de fin de support (EOL), repérage des boîtes inactives et tableau de bord exportable.
Script 100 % autonome et hors-ligne : un seul fichier
.ps1, bibliothèque Chart.js embarquée en base64/inline, aucun accès Internet requis pour générer ou consulter le rapport.
- Fonctionnalités
- Prérequis
- Description Détaillée des Paramètres
- Exemples d'Utilisation
- Automatisation (Tâche Planifiée)
- Logique de Résolution des Versions
- Gestion du Cache & Performances
- Foire Aux Questions (FAQ)
- Auteur & Licence
- Analyse multi-protocoles : Analyse conjointe des logs MAPI over HTTP et RPC Client Access de tous les serveurs boîtes aux lettres (découverte automatique ou liste ciblée).
- Moteur de résolution précis : Correspondance exacte build ↔ version commerciale depuis Outlook 97 jusqu'à Outlook 2024 LTSC, branches mensuelles Microsoft 365 Apps (v.YYMM) et Nouveau Outlook (Monarch).
- Performances & Multi-threading : Traitement parallèle des fichiers de logs via
RunspacePoolet cache incrémental sur disque pour des exécutions ultra-rapides. - Enrichissement Active Directory : Résolution automatique des adresses UPN et noms d'affichage (DisplayName) avec cache mémoire et LDAP/ADSI.
- Tableau de bord HTML riche :
- Cartes KPI récapitulatives (utilisateurs uniques, versions détectées, entrées analysées, version dominante, alertes EOL).
- Graphique Donut par catégorie avec total central + Courbe d'activité journalière.
- Résumé statistique par version avec barres de proportion, pourcentages et badges EOL (Fin de support) / OK.
- Tableau détaillé des utilisateurs avec pagination (25, 50, 100, Tout), recherche globale instantanée, filtres par colonne, tri multi-critères, badges d'inactivité (> 30 jours).
- Export CSV dynamique des lignes filtrées et feuille de style d'impression optimisée (PDF).
| Composant | Prérequis |
|---|---|
| OS / Shell | Windows PowerShell 5.1 (Exchange Management Shell) ou PowerShell 7+ |
| Droits | Droits de lecture sur les logs Exchange (Administrateur local ou accès aux partages administratifs \\Serveur\C$) + lecture Active Directory |
| Logs activés | Set-MailboxServer -MapiHttpLoggingEnabled $true pour MAPI over HTTP ; logs RPC Client Access actifs par défaut |
| Réseau | Accès distant aux dossiers de logs (\\<serveur>\C$\Program Files\Microsoft\Exchange Server\V15\Logging\...) en cas d'analyse multi-serveurs |
Voici la liste exhaustive de tous les paramètres acceptés par le script :
| Paramètre | Type | Valeur par défaut | Description détaillée |
|---|---|---|---|
-LogAgeDays |
[int] |
7 |
Nombre de jours d'historique de logs à analyser. Alias : -Days, -DaysBack, -DureeDéfinit la fenêtre temporelle de collecte. Par exemple, -LogAgeDays 30 analysera tous les fichiers de logs générés au cours des 30 derniers jours. |
-ReportPath |
[string] |
Automatique | Chemin complet du fichier de rapport HTML généré. Par défaut, crée outlook.html dans le répertoire du script. Si ce fichier existe déjà, un nom unique outlookXXXXX.html (5 chiffres aléatoires) est automatiquement attribué pour ne pas écraser l'existant. |
-CsvPath |
[string] |
Aucun | Chemin d'export des données brutes en format CSV. Alias : -CsvPermet d'exporter l'ensemble des enregistrements consolidés (Utilisateur, DisplayName, Version, Timestamp, IP, Serveur) directement dans un fichier CSV séparé par des virgules et encodé en UTF-8. |
-Server |
[string[]] |
Serveur local | Liste des serveurs Exchange spécifiques à analyser. Accepte un ou plusieurs noms NetBIOS ou FQDN séparés par des virgules (ex: -Server EXCH01, EXCH02). |
-AllServers |
[switch] |
$false |
Découverte automatique de toute l'organisation Exchange. Interroge Get-MailboxServer pour collecter les logs sur l'ensemble des serveurs boîtes aux lettres de l'organisation Active Directory. |
-SkipMapiHttp |
[switch] |
$false |
Ignore l'analyse des logs MAPI over HTTP. Utile pour cibler uniquement le trafic RPC Client Access ou accélérer l'analyse si MAPI over HTTP n'est pas utilisé. |
-SkipRpcClientAccess |
[switch] |
$false |
Ignore l'analyse des logs RPC Client Access. Recommandé si votre infrastructure Exchange fonctionne exclusivement en MAPI over HTTP. |
-ForceRefresh |
[switch] |
$false |
Force le rafraîchissement des caches locaux. Ignore les fichiers de cache Clixml existants et réanalyse l'intégralité des fichiers de logs ainsi que les requêtes Active Directory. |
-NoCache |
[switch] |
$false |
Désactive totalement l'utilisation du cache. Le script n'écrira ni ne lira aucun fichier dans le dossier de cache GetOutlookReport_LogsCache. |
-OpenReport |
[switch] |
$false |
Ouverture automatique du rapport. Ouvre automatiquement le rapport HTML dans votre navigateur web par défaut dès la fin de la génération. |
.\Get-OutlookVersionReport.ps1.\Get-OutlookVersionReport.ps1 -LogAgeDays 30 -ReportPath "C:\Rapports\Audit_Outlook_Mensuel.html" -OpenReport.\Get-OutlookVersionReport.ps1 -AllServers -LogAgeDays 14 -CsvPath "C:\Rapports\Outlook_Connexions.csv".\Get-OutlookVersionReport.ps1 -Server "SRV-MBX01", "SRV-MBX02" -SkipRpcClientAccess -LogAgeDays 15.\Get-OutlookVersionReport.ps1 -AllServers -ForceRefresh -ReportPath "C:\Rapports\outlook_complet.html"Pour exécuter le rapport automatiquement chaque lundi matin à 07h00 et déposer le fichier sur un partage réseau :
$action = New-ScheduledTaskAction -Execute "powershell.exe" `
-Argument "-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\Get-OutlookVersionReport.ps1 -AllServers -LogAgeDays 7 -ReportPath \\Partage\Rapports\Outlook_Hebdo.html"
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 07:00
$principal = New-ScheduledTaskPrincipal -UserId "DOMAINE\CompteServiceExchange" -LogonType ServiceAccount
Register-ScheduledTask -TaskName "Rapport Hebdomadaire Versions Outlook" -Action $action -Trigger $trigger -Principal $principalToutes les versions modernes depuis Outlook 2016 partagent le préfixe majeur 16.0. Le script s'appuie sur le 3ème bloc de version (Build) pour distinguer précisément les éditions selon la documentation officielle Microsoft Learn Office Updates :
| Famille commerciale | Plage / Bloc de Build | État du Support Microsoft |
|---|---|---|
| Outlook 2016 (MSI) | 4000 à 5999 |
|
| Microsoft 365 Apps (Branche 2016) | 6000 à 10324 |
|
| Outlook 2019 (Volume) | 10336 à 10499 |
|
| Outlook 2021 (LTSC) | 14332 à 14349 |
🟢 Supporté jusqu'en Octobre 2026 |
| Outlook 2024 (LTSC) | 17932 (exact) |
🟢 Supporté jusqu'en Octobre 2029 |
| Microsoft 365 Apps (v.YYMM) | Builds mensuels récents (ex: 19127 = 2508) | 🟢 Support standard Microsoft 365 |
| Nouveau Outlook (Monarch) | 1.x |
🟢 Client moderne web/desktop |
- Dossier de cache : Crée un sous-dossier
GetOutlookReport_LogsCacheà côté du script contenant des fichiers au formatClixml. - Validation intelligente : Un fichier de log n'est re-parsé que si sa date de modification ou sa taille a changé.
- Cache Active Directory : Les requêtes de résolution des noms d'utilisateurs sont mises en cache pour éviter la surcharge des contrôleurs de domaine.
- Les commutateurs
-ForceRefreshet-NoCachepermettent de contrôler finement ce comportement.
Le badge EOL (End of Life) indique que la version d'Outlook utilisée a dépassé la date de fin de support officiel fixée par Microsoft (ex: Outlook 2010, 2013, ou 2016/2019 après octobre 2025).
Il signale une boîte aux lettres pour laquelle la dernière connexion enregistrée dans les logs analysés remonte à plus de 30 jours (comptes dormants, départs, boîtes de service inactives).
Non, le bouton Export CSV télécharge l'intégralité des données correspondant aux critères de recherche et filtres actifs, sans restriction de pagination.
- Auteur : B.O
- Version : 1.0
- Licence : MIT