Exchange Server 2016 : corriger Search‑AdminAuditLog et éviter les quarantaines (EN‑150)

Dans Exchange Server 2016, le paramètre régional EN‑150 peut faire échouer Search‑AdminAuditLog et provoquer des quarantaines de boîtes. Ce guide fournit un plan opérationnel pour restaurer l’audit et éliminer les quarantaines, sans dégrader l’expérience utilisateur.

Sommaire

Problème posé

Dans un environnement Exchange Server 2016 (4 serveurs, > 5 000 boîtes), la recherche d’audit d’administration (Search‑AdminAuditLog) ne renvoie aucun résultat dès qu’on ajoute des paramètres. Le contournement consistant à basculer les paramètres régionaux en EN‑150 (“English Europe”) rétablit l’audit mais déclenche quasi immédiatement la quarantaine automatique de nombreuses boîtes partageant cette culture. La suppression d’EN‑150 stoppe la quarantaine mais brise à nouveau l’audit. L’enjeu est de concilier un audit fonctionnel avec zéro boîte en quarantaine.

Résumé exécutif (Exchange 2016 / EN‑150 / Audit)

  • Origine : bug de parsing lié aux cultures « non standard » (en‑150) qui perturbe Search‑AdminAuditLog.
  • Effet secondaire : le Store Integrity Checker peut interpréter certaines boîtes EN‑150 comme incohérentes et les placer en quarantaine.
  • Remédiation pérenne : déployer CU23 + SU ≥ mars 2022, remplacer EN‑150 par une culture supportée (en‑GB ou en‑US), réaligner la culture système des serveurs, lever proprement les quarantaines, et basculer la collecte vers New‑AdminAuditLogSearch ou le Centre de conformité.

Analyse technique rapide

VoletExplications clés
Échec d’auditBug connu : certaines cultures « non standard » empêchent Exchange de parser la requête et d’interroger l’AdminAuditLog.
QuarantaineLe Store Integrity Checker place en quarantaine les boîtes dont la culture (MailboxCulture / RegionalConfiguration) n’est pas reconnue. EN‑150 (“English Europe”) peut être interprété comme anomalie.
BoucleAprès dé‑quarantaine, tant que la culture reste invalide ou non supportée, la boîte risque la re‑quarantaine au prochain contrôle d’intégrité.

Pourquoi EN‑150 pose problème dans Exchange 2016 ?

EN‑150 est une étiquette BCP 47 historique (« English — Europe ») : elle existe, mais n’est pas prise en charge uniformément par toutes les couches d’Exchange 2016. Certaines combinaisons de culture/date/heure entraînent des divergences de formatage qui perturbent la construction et l’évaluation des requêtes d’audit. À l’inverse, des cultures supportées nativement (par ex. en‑GB ou en‑US) ne déclenchent ni l’échec d’audit ni la mise en quarantaine.

Plan d’action recommandé

  1. Mettre à niveau vers CU23 et au minimum le Security Update (SU) de mars 2022 sur tous les rôles Exchange (Mailbox, Edge).
  2. Inventorier les boîtes et remplacer EN‑150 par en‑GB ou en‑US (avec formats date/heure homogènes).
  3. Aligner la culture système des serveurs Exchange et redémarrer proprement pour que le service Information Store prenne les nouveaux paramètres.
  4. Lever les quarantaines et purger les marqueurs de quarantaine.
  5. Pérenniser l’audit via New‑AdminAuditLogSearch ou le Centre de conformité, et surveiller préventivement la santé du Store.

Étapes détaillées

Vérifier le niveau de mise à jour d’Exchange 2016

Depuis la Exchange Management Shell, contrôlez la version effective :

Get-ExchangeServer | ft Name, Edition, AdminDisplayVersion
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\ExchangeServer\v15\Setup' `
  | fl *Build*, *Version*

La correction durable du parsing des cultures est incluse à partir de CU23 + SU de mars 2022 (ou ultérieure). Assurez‑vous que tous les serveurs d’un même site sont homogènes avant de poursuivre.

Inventorier les boîtes affectées par EN‑150

Liste des boîtes EN‑150 (avec export CSV pour audit) :

$affected = Get-Mailbox -ResultSize Unlimited |
  Where-Object { $_.MailboxCulture -eq 'en-150' -or
    (Get-MailboxRegionalConfiguration -Identity $_.Identity).Language -eq 'en-150' }

$affected | Select-Object DisplayName,PrimarySmtpAddress,OrganizationalUnit,MailboxCulture |
Export-Csv '.\mailboxes_en150.csv' -NoTypeInformation -Encoding UTF8

$affected | ft DisplayName, PrimarySmtpAddress, MailboxCulture 

Remplacer EN‑150 par une culture prise en charge

Pour un environnement « euro », en‑GB apporte une convention jj/MM/aaaa robuste. Exemple de correction en masse (avec dry‑run) :

# DRY-RUN : vérifier les modifications sans appliquer
$affected | ForEach-Object {
  "Would set {0} to en-GB" -f $_.PrimarySmtpAddress
}

# Application : culture, formats date/heure, fuseau

$affected | Set-MailboxRegionalConfiguration `  -Language en-GB -Locale en-GB -DateFormat 'dd/MM/yyyy'`
-TimeFormat 'HH:mm' -TimeZone 'W. Europe Standard Time' 

Variante en‑US si nécessaire :

Get-Mailbox -ResultSize Unlimited |
  ? { $_.MailboxCulture -eq 'en-150' } |
  Set-MailboxRegionalConfiguration -Language en-US -Locale en-US `
    -DateFormat 'MM/dd/yyyy' -TimeFormat 'hh:mm tt' -TimeZone 'Pacific Standard Time'

Bonnes pratiques :

  • Inclure les boîtes partagées, de ressources et d’arbitration dans l’inventaire.
  • Uniformiser les formats date/heure pour éviter des divergences d’affichage entre Outlook et OWA.
  • Documenter la culture cible par unité d’organisation (OU) pour faciliter l’onboarding futur.

Aligner la culture des serveurs Exchange

Un socle serveur cohérent réduit les faux positifs d’intégrité.

# Exécuter en PowerShell élevé sur chaque serveur Exchange
Set-WinSystemLocale en-US
Set-WinUserLanguageList en-US -Force
Set-Culture en-US
# Redémarrage nécessaire pour MSExchangeIS

À l’issue du redémarrage, validez que MSExchangeIS démarre sans anomalie et que les journaux Application ne remontent plus d’erreurs de régionalisation.

Sortir les boîtes de la quarantaine store

Détecter les boîtes en quarantaine :

# Tous les DBs
Get-MailboxDatabase | ForEach-Object {
  Get-MailboxStatistics -Database $_.Name |
    Where-Object { $_.IsQuarantined -eq $true } |
    Select-Object DisplayName,MailboxGuid,Database,LastLogonTime
}

Lever la quarantaine une fois la culture corrigée :

# Au cas par cas
Disable-MailboxQuarantine -Identity "Nom Affiché"

# Vérification

Get-MailboxStatistics -Identity "Nom Affiché" | fl IsQuarantined, Quarantine* 

Si la boîte rebascule en quarantaine : purgez le marqueur résiduel puis recyclez MSExchangeIS en fenêtre de maintenance contrôlée. Évitez de redémarrer en heures ouvrées.

Assurer la collecte d’audit sans dépendre de Search‑AdminAuditLog

La cmdlet New‑AdminAuditLogSearch offre une collecte asynchrone et fiable et envoie un rapport par mail. Exemple :

New-AdminAuditLogSearch `
  -Name "Audit_SetMailbox_Weekly" `
  -Cmdlets Set-Mailbox `
  -StartDate "2024-12-01" -EndDate "2024-12-10" `
  -StatusMailRecipients admin@contoso.com

Complétez par une supervision via le Centre de conformité (Purview) pour disposer d’un journal d’audit consolidé et requêtable.

Contrôles post‑remédiation

  • Audit : Search‑AdminAuditLog renvoie des résultats dès qu’un filtre est ajouté (cmdlet, paramètres, dates).
  • Quarantaine : IsQuarantined = $false pour toutes les boîtes précédemment touchées.
  • Culture : Get-MailboxRegionalConfiguration = en‑GB ou en‑US, formats conformes, fuseau correct.
  • Serveurs : journaux Application dépourvus d’erreurs de régionalisation/parsing sur MSExchangeIS, MSExchange ADAccess, MSExchange Management.

Script d’automatisation « détecter‑corriger‑valider »

param(
  [ValidateSet('en-GB','en-US')] [string]$TargetCulture = 'en-GB',
  [string]$DateFormat = 'dd/MM/yyyy',
  [string]$TimeFormat = 'HH:mm',
  [string]$TimeZone   = 'W. Europe Standard Time'
)

$report = @()

$mbx = Get-Mailbox -ResultSize Unlimited |
Where-Object {
$*.RecipientTypeDetails -in @('UserMailbox','SharedMailbox','RoomMailbox','EquipmentMailbox') -and
($*.MailboxCulture -eq 'en-150' -or
(Get-MailboxRegionalConfiguration -Identity $_.Identity).Language -eq 'en-150')
}

foreach ($m in $mbx) {
$before = Get-MailboxRegionalConfiguration -Identity $m.Identity
try {
Set-MailboxRegionalConfiguration -Identity $m.Identity `      -Language $TargetCulture -Locale $TargetCulture`
-DateFormat $DateFormat -TimeFormat $TimeFormat -TimeZone $TimeZone -ErrorAction Stop

```
$after = Get-MailboxRegionalConfiguration -Identity $m.Identity
$report += [pscustomobject]@{
  Mailbox = $m.PrimarySmtpAddress
  Status  = 'Updated'
  From    = $before.Language
  To      = $after.Language
}
```

}
catch {
$report += [pscustomobject]@{
Mailbox = $m.PrimarySmtpAddress
Status  = 'Error: ' + $_.Exception.Message
From    = $before.Language
To      = $TargetCulture
}
}
}

$report | Tee-Object -FilePath ".\en150_remediation_$(Get-Date -f yyyyMMdd_HHmm).csv" | ft -AutoSize 

Prévention et surveillance continue

  • Onboarding : geler la culture cible par défaut (par ex. en‑GB) dans les scripts de création de comptes.
  • Garde‑fous : refuser en‑150 en entrée via vérification .NET ([cultureinfo]::GetCultureInfo()) dans vos workflows.
  • Sentinelle de quarantaine : job planifié quotidien : Get-MailboxDatabase | % { Get-MailboxStatistics -Database $_.Name | ? IsQuarantined | Select DisplayName, Database, MailboxGuid } | Export-Csv .\quarantine_watch.csv -NoTypeInformation
  • Santé Store : surveiller la composante « Store » : Get-ServerHealth -Identity <ServerName> | ? { $_.Component -eq 'Store' } | ft Name, State
  • Audit résilient : planifier une recherche hebdomadaire New‑AdminAuditLogSearch par famille de cmdlets sensibles (Set‑Mailbox, Add‑ADPermission, etc.).

Tableau d’aide à la décision

SituationActionContrôleImpact / Risques
Audit vide dès qu’un filtre est ajoutéVérifier version (≥ CU23 + SU 03/2022), éliminer EN‑150Search‑AdminAuditLog retourne des entréesFaible ; opération en ligne
Boîtes en quarantaineCorriger culture, Disable-MailboxQuarantineIsQuarantined = $falseRisque de re‑quarantaine si culture non corrigée
Parc hétérogèneAligner culture serveur (en‑US conseillé)Journaux Application propresReboot requis (planifier)
Besoin d’audit fiablePasser à New‑AdminAuditLogSearch / PurviewRapports réguliers par emailNéant

FAQ (retours d’expérience)

Changer la culture va‑t‑il perturber les utilisateurs ?

Non pour Outlook ; l’affichage s’aligne sur le nouveau format date/heure et la langue de l’interface reste conditionnée par la configuration Office. Sur OWA, une reconnexion peut être nécessaire pour refléter la mise à jour.

Quelle culture choisir entre en‑GB et en‑US ?

Prenez celle qui correspond à votre conformité et à vos conventions de reporting. en‑GB est souvent préférable en Europe (format jj/MM/aaaa).

Dois‑je corriger aussi les boîtes systèmes ?

Oui, incluez Shared, Room, Equipment et les boîtes d’arbitration. La cohérence globale abaisse le risque de quarantaines « diffuses ».

Et si je ne peux pas redémarrer les serveurs rapidement ?

Priorisez la correction côté boîtes aux lettres (Set‑MailboxRegionalConfiguration) et la bascule de collecte via New‑AdminAuditLogSearch. Programmez ensuite l’alignement serveur lors d’une fenêtre approuvée.

Pourquoi ne pas rester sur EN‑150 si l’audit remarche ?

Parce que vous déclenchez un autre problème (quarantaine). La stratégie gagnante est d’éliminer EN‑150 et de disposer d’un Exchange à jour.

Check‑list « Change Management »

  • ✅ Sauvegarde récente (bases et configuration) vérifiée.
  • ✅ Homologation CU/SU en pré‑prod (tests d’audit, de flux mail, d’OWA).
  • ✅ Export des boîtes EN‑150 et plan de correction validé.
  • ✅ Fenêtre de maintenance approuvée pour le redémarrage des serveurs.
  • ✅ Scénarios de retour arrière (restauration culture précédente si besoin).
  • ✅ Supervision post‑changement (audit, quarantaine, journaux).

Pièges courants et comment les éviter

  • Corriger la culture sans uniformiser les formats : assurez des formats date/heure cohérents, sinon de nouvelles divergences d’affichage peuvent apparaître.
  • Lever la quarantaine avant correction : la boîte risque d’y retourner automatiquement. Modifiez d’abord la culture, puis dé‑quarantinez.
  • Oublier des boîtes « techniques » : n’excluez pas les boîtes partagées ou de ressources de l’inventaire.
  • Serveurs hétérogènes : mélange de cultures côté OS = comportements imprévisibles. Alignez tout le parc.

Solution donnée dans l’échange d’origine

La seule réponse initiale a été de rediriger vers le forum spécialisé Microsoft Q&A pour un support Exchange dédié. Le présent article synthétise une solution opérable sans dépendre d’un renvoi externe.

Informations complémentaires utiles

  • ▶️ EN‑150 est une balise BCP 47 valide mais historique ; Exchange 2016 n’en reconnait pas toutes les variantes, d’où le bug de parsing.
  • ▶️ La fin du support étendu d’Exchange 2016 intervient en octobre 2025. Anticipez une montée de version (Exchange 2019 ou M365) pour sécuriser durablement audit et conformité.
  • ▶️ Conserver un paramètre régional homogène (serveur ↔ boîte) réduit considérablement les faux positifs de corruption/quarantaine.

Annexes : commandes utiles

Validation rapide côté audit

# Attendu : des entrées s'affichent
Search-AdminAuditLog -Cmdlets Set-Mailbox -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date)

# Alternative résiliente

New-AdminAuditLogSearch -Name 'Audit_Weekly' -Cmdlets Set-Mailbox `  -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date)`
-StatusMailRecipients [admin@contoso.com](mailto:admin@contoso.com) 

Inventaire complet des cultures

Get-Mailbox -ResultSize Unlimited |
  Select-Object DisplayName, PrimarySmtpAddress,
    @{n='Language';e={(Get-MailboxRegionalConfiguration -Identity $_.Identity).Language}},
    @{n='DateFormat';e={(Get-MailboxRegionalConfiguration -Identity $_.Identity).DateFormat}},
    @{n='TimeFormat';e={(Get-MailboxRegionalConfiguration -Identity $_.Identity).TimeFormat}},
    @{n='TimeZone';e={(Get-MailboxRegionalConfiguration -Identity $_.Identity).TimeZone}} |
  Export-Csv .\mailbox_cultures_full.csv -NoTypeInformation

Suivi santé Store

Get-ServerHealth -Identity &lt;ServerName&gt; | ? Component -eq 'Store' | ft Name,State,AlertValue

Conclusion

Le duo Exchange 2016 + EN‑150 peut piéger l’audit d’administration et pousser le Store à quarantainer des boîtes. La combinaison gagnante est claire : CU23 + SU ≥ 03/2022 sur tout le parc, remplacement d’EN‑150 par une culture officiellement supportée, alignement des serveurs, dé‑quarantaine maîtrisée et collecte d’audit via des mécanismes robustes. En procédant ainsi, vous restaurez simultanément la conformité et la stabilité opérationnelle, tout en préparant sereinement la transition vers une plateforme plus récente.

Sommaire