Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Get-OutlookVersionReport.ps1 (v1.0)

PowerShell Exchange Version License

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.


Sommaire


Fonctionnalités

  • 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 RunspacePool et 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).

Prérequis

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

Description Détaillée des Paramètres

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, -Duree
Dé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 : -Csv
Permet 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.

Exemples d'Utilisation

1. Analyse standard rapide (serveur local, 7 derniers jours)

.\Get-OutlookVersionReport.ps1

2. Audit mensuel complet avec ouverture automatique

.\Get-OutlookVersionReport.ps1 -LogAgeDays 30 -ReportPath "C:\Rapports\Audit_Outlook_Mensuel.html" -OpenReport

3. Analyse de tous les serveurs de l'organisation avec export CSV

.\Get-OutlookVersionReport.ps1 -AllServers -LogAgeDays 14 -CsvPath "C:\Rapports\Outlook_Connexions.csv"

4. Ciblage de serveurs spécifiques en ignorant le protocole RPC obsolète

.\Get-OutlookVersionReport.ps1 -Server "SRV-MBX01", "SRV-MBX02" -SkipRpcClientAccess -LogAgeDays 15

5. Réanalyse complète en forçant le rafraîchissement du cache

.\Get-OutlookVersionReport.ps1 -AllServers -ForceRefresh -ReportPath "C:\Rapports\outlook_complet.html"

Automatisation (Tâche Planifiée)

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 $principal

Logique de Résolution des Versions

Toutes 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 ⚠️ Fin de support : Octobre 2025
Microsoft 365 Apps (Branche 2016) 6000 à 10324 ⚠️ Obsolète (anciennes versions M365)
Outlook 2019 (Volume) 10336 à 10499 ⚠️ Fin de support : Octobre 2025
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

Gestion du Cache & Performances

  • Dossier de cache : Crée un sous-dossier GetOutlookReport_LogsCache à côté du script contenant des fichiers au format Clixml.
  • 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 -ForceRefresh et -NoCache permettent de contrôler finement ce comportement.

Foire Aux Questions (FAQ)

Que signifie le badge "EOL" dans le rapport ?

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).

Que signifie le badge orange "Inactif > 30 j" ?

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).

L'export CSV n'exporte-t-il que la page en cours ?

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 & Licence

  • Auteur : B.O
  • Version : 1.0
  • Licence : MIT

About

Rapport HTML et audit des versions Microsoft Outlook pour serveurs Exchange

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages