PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

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

mercredi 5 février 2020 à 11:00

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 👍