14/11/2024

Office 365PowerShell

Office 365 : modifier la langue et le fuseau horaire par défaut avec PowerShell

I. Présentation

Lors de la création de comptes sur un tenant Office 365, que ce soit manuellement, via un script ou à l'aide de l'outil Azure AD Connect, il sera demandé à chaque utilisateur de définir la langue et un fuseau horaire lorsqu'il accédera à sa messagerie pour la première fois (à partir du portail en ligne).

Pour simplifier la connexion des comptes, il n'existe pas, à l'heure actuelle, la possibilité de configurer ces deux paramètres à l'échelle du tenant. L'alternative consiste donc à passer par un script alternatif que l'on va exécuter à intervalle régulier.

II. Etat actuel des comptes

Pour obtenir la langue et le fuseau horaire actuellement utilisés sur vos boites aux lettres, vous pouvez utiliser la commande suivante :

Get-Mailbox -ResultSize Unlimited | Get-MailboxRegionalConfiguration

Par défaut, la commande Get-Mailbox retourne seulement les 1 000 premiers résultats. Sur un tenant de plus d'un millier de comptes, il faudra spécifier "-ResultSize Unlimited" pour récupérer tous les comptes.

Identity         Language   DateFormat   TimeFormat   TimeZone 
--------         --------   ----------   ----------   -------- 
TEST Compte 1    fr-FR      dd/MM/yyyy   HH:mm        Romance Standard Time 
TEST Compte 2 
TEST Compte 3    fr-FR      dd/MM/yyyy   HH:mm        Romance Standard Time

S'il y a une ligne vide comme sur l'exemple ci-dessus, c'est que le compte n'est pas configuré, d'où l'utilité de le faire pour simplifier la connexion de l'utilisateur.

III. Configurer la langue et le fuseau horaire

Chaque langue dispose de son propre identifiant, qu'il faudra spécifier dans la commande de configuration. Voici trois exemples :

- French (France) : 1036
- English (United Kingdom) : 2057
- English (United States) : 1033

Pour le fuseau horaire correspondant à Paris (Brussels, Copenhagen, Madrid, Paris), il faut utiliser l'intitulé "Romance Standard Time".

105 Romance Standard Time (GMT+01:00) Brussels, Copenhagen, Madrid, Paris

Maintenant que l'on a en notre possession les deux valeurs qui nous intéressent, nous allons passer à l'action. Pour mettre à jour les paramètres sur l'intégralité des comptes, la commande sera simplement :

Get-Mailbox -ResultSize Unlimited | Set-MailboxRegionalConfiguration -Language 1036 -TimeZone "Romance Standard Time"

Pour cibler un compte spécifique, nous devons utiliser plutôt le paramètre -Identity :

Get-Mailbox -Identity "test.itconnect" | Set-MailboxRegionalConfiguration -Language 1036 -TimeZone "Romance Standard Time"

Cependant, s'il y a vraiment beaucoup de comptes sur le tenant, ce n'est pas très pratique (d'autant plus que Microsoft applique une "bride" au-delà d'un quota de requêtes). Si vous exécutez le script en fin de journée, il est alors possible de récupérer la liste des comptes créés le jour J, pour ne traiter que ceux-là. En tout cas, cette méthode est également pratique pour les prochaines exécutions, une fois que tous les comptes existants sont configurés.

Nous allons stocker dans la variable $Date, la date du jour et l'heure 00:00:00. Comme ça, si l'on exécute le script en fin de journée, on pourra traiter tous les comptes créés aujourd'hui puisque l'on recherche les utilisateurs qui ont une date de création "plus grande" que la valeur de $Date. Ensuite, pour chaque utilisateur (Foreach) nous allons appliquer la configuration sur la langue et le fuseau horaire 🙂

Ce qui donne :

[datetime]$Date = Get-Date -Format "MM/dd/yyyy"
$Date.AddHours(00).AddMinutes(00).AddSeconds(00)

Get-MsolUser -All | Where{ $_.WhenCreated -gt $Date } | Foreach{

   Write-Host "Configuration de $($_.UserPrincipalName)"
   Get-Mailbox -Identity $_.UserPrincipalName | Set-MailboxRegionalConfiguration -Language 1036 -TimeZone "Romance Standard Time"

}

Voilà, il ne reste plus qu'à enregistrer ce snippet dans un fichier PS1 (en pensant à ajouter au début la phase de connexion 0365) et à créer la tâche planifiée qui va bien ?

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 : modifier la langue et le fuseau horaire par défaut avec PowerShell

  • Bonjour,
    cela fonctionne bien.
    En revanche les dossiers sont quand même en anglais dans l’arborescence d’outlook, bien que dans les paramètres OWA le fuseau et la langue sont bons. si je modifie le fuseau via OWA et que je le remet à PARIS, les dossiers sont bien renommées en francais.
    Auriez vous une solution pour rebasculer les noms de dossiers en francais pour toutes les boites?

    Répondre
  • Bonjour,

    Cela ne fonctionne pas, OWA et Outlook reste en Anglais, alors que la commande passe bien après vérification sur le shell la langue est bien en fr-FR et time zone « Romance standard Time ».
    avez vous une solution ? car j’en ai 150 à faire.
    merci
    cordialement

    Répondre
  • en faite j’ai trouvé, il faut mette cette commande :

    Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited | Set-MailboxRegionalConfiguration -Language fr-FR -DateFormat « dd/MM/yyyy » -TimeFormat H:mm -LocalizeDefaultFolderName

    cordialement

    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.