Adaptez vos scripts Exchange Online pour utiliser Get-ExoMailbox

Adaptez vos scripts Exchange Online pour utiliser Get-ExoMailbox

Laissez tomber Get-Mailbox, il a fait son temps.

Récemment, j’ai écrit sur la cmdlet New-DistributionGroup pour expliquer pourquoi je pense que les listes de distribution sont toujours aussi précieuses, malgré les efforts de Microsoft pour convaincre le monde que les groupes Microsoft 365 sont meilleurs. Aujourd’hui, je veux parler d’une cmdlet encore plus fondamentale pour l’expérience de beaucoup de gens qui travaillent avec Exchange via PowerShell : Get-Mailbox. Ou, pour être plus précis, la nouvelle version améliorée de Get-ExoMailbox.

Microsoft a introduit Get-ExoMailbox comme l’une des neuf cmdlets initiales mises à niveau en 2019 pour utiliser les API REST (comme le Microsoft Graph) au lieu de Remote PowerShell (RPS) pour une très bonne raison. Récupérer des ensembles de boîtes aux lettres à traiter est une activité fondamentale pour tout administrateur Exchange. Get-Mailbox fonctionne, mais il est lent et sujet aux erreurs, surtout lorsqu’il s’agit de grands ensembles d’objets. À cet égard, il partage les mêmes défauts que les autres cmdlets PowerShell distants. Le fait que Get-Mailbox soit utilisé si souvent pour traiter autant de données le fait paraître plus problématique que ses pairs. Ce n’est pas vraiment le cas. Au contraire, Get-Mailbox révèle toutes les failles inhérentes au fait de dépendre d’une connexion à un serveur distant nommé qui peut ou non rester disponible pendant toute une session.

Adaptez vos scripts Exchange

Trois étapes vers le bonheur PowerShell d’Exchange Online

Quoi qu’il en soit, à l’heure actuelle, vous devriez avoir converti les scripts d’Exchange Online en :

  • Utilisez le module Exchange Online Management au lieu de Remote PowerShell.
  • Utilisez la cmdlet Connect-IPPSSession pour vous connecter au point de terminaison de la conformité. La version actuelle du module Exchange Online Management permet des sessions simultanées connectées à la gestion d’Exchange et à la conformité.
  • Remplacez Get-Mailbox par Get-ExoMailbox et changez d’autres cmdlets importants en même temps. Les trois commutations les plus urgentes à effectuer sont Get-ExoMailboxStatistics, Get-ExoMailboxFolderStatistics et Get-ExoMailboxPermission.

Le module de gestion d’Exchange Online et les cmdlets basés sur REST n’existent pas pour Exchange on-premises. Le mode de fonctionnement de l’infrastructure d’Exchange Online a révélé certaines failles de Remote PowerShell qui n’existent pas dans les déploiements sur site. Microsoft n’a donc pas encore déplacé les nouveaux cmdlets dans ce domaine. Cela arrivera-t-il un jour ? Je ne sais pas, mais si je devais deviner, je dirais non. Mais il ne faut jamais dire jamais.

Version 2.0.5 de la gestion d’Exchange Online

En parlant de versions, Microsoft a publié la V2.0.5 du module de gestion d’Exchange Online le 10 mai. Ils n’ont toujours pas mis à jour les notes de publication du module, donc nous ne savons pas ce que contient la nouvelle version. En tout cas, j’utilise la 2.0.5 depuis une semaine et tout semble stable. Quelque 70 000 autres personnes ont téléchargé la 2.0.5 et je n’ai entendu parler d’aucun problème jusqu’à présent.

Optimisation des données des boîtes aux lettres

Pour en revenir à Get-ExoMailbox, le grand problème de mise à niveau dont j’entends parler sans cesse est la nécessité de spécifier les propriétés lors de la récupération des données de la boîte aux lettres. Il s’agit d’un changement de comportement par rapport à Get-Mailbox, mis en œuvre pour optimiser l’extraction des données de la boîte aux lettres. Le problème est que les propriétés d’une boîte aux lettres couvrent des centaines d’éléments différents, dont certains doivent être récupérés ou validés avec Azure AD. Si vous faites quelque chose comme :

Get-Mailbox -Identity TRedmond

Vous récupérez toutes les propriétés de la boîte aux lettres. Mais si vous exécutez :

Get-ExoMailbox -Identity TRedmond

Exchange Online ne récupère que 15 propriétés. Ce sont les plus importantes, comme

  • le nom d’affichage,
  • le nom principal de l’utilisateur,
  • les adresses électroniques
  • le très sous-utilisé ExternalDirectoryObjectId.

Il s’agit du pointeur (GUID) vers le compte Azure AD qui possède la boîte aux lettres. Tous les objets de messagerie d’Exchange Online connectés à Azure AD ont cette propriété pour faciliter la connexion à Azure AD. L’utilisation de GUID pour référencer des objets est très courante dans Office 365, notamment dans chaque appel à l’API Graph pour récupérer des données sur un objet, il est donc bon de s’habituer à utiliser des GUID.

Par exemple, je peux faire ça :

Get-AzureADUser -ObjectId ((Get-ExoMailbox -Identity Tony.Redmond@office365itpros.com).ExternalDirectoryObjectId) | Select ObjectId, DisplayName
 
ObjectId                             DisplayName
--------                             -----------
f1dbb86a-69bf-4245-8bc7-5e1d09d9d8cc Tony Redmond (Office 365 for IT Pros)

Je peux prendre l’ObjectId renvoyé par Azure AD et l’utiliser avec Get-ExoMailbox :


Get-ExoMailbox -Identity f1dbb86a-69bf-4245-8bc7-5e1d09d9d8cc

Étant donné que Get-ExoMailbox fait attention à ce qu’il récupère, vous devez souvent inclure des requêtes pour récupérer des propriétés individuelles ou des ensembles de propriétés dans vos appels (un ensemble de propriétés est une collection de propriétés communes à un certain objectif, comme les quotas). Par exemple, la propriété WhenCreated ne fait pas partie des 15 propriétés de base, donc si je veux l’utiliser, je dois l’inclure dans l’appel :

Get-ExoMailbox -Identity TRedmond -Properties WhenCreated

Les grands avantages

Les avantages du passage à Get-ExoMailbox sont les suivants :

  • De meilleures performances, notamment lors du traitement d’un grand nombre de boîtes aux lettres. Votre kilométrage variera en fonction de ce que vous faites, mais lorsque j’ai testé les nouvelles cmdlets en public lors de Microsoft Ignite 2019, l’augmentation de la vitesse était entre trois et quatre fois plus rapide pour traiter des milliers de boîtes aux lettres. Vous ne verrez pas beaucoup d’avantages si vous ne récupérez jamais que quelques boîtes aux lettres. Et à l’autre extrémité de l’échelle, pour traiter de très grandes quantités de boîtes aux lettres, les API graphiques pourraient être une meilleure solution.
  • Une meilleure fiabilité. Get-ExoMailbox et les autres cmdlets basés sur REST sont mieux à même de gérer les problèmes de serveur. Si vous êtes en train de récupérer des milliers de boîtes aux lettres, la dernière chose que vous souhaitez est qu’Exchange Online change de contrôleur de domaine (cela arrive, même dans le cloud). Remote PowerShell échouera. Get-ExoMailbox se terminera probablement avec succès (les erreurs sont toujours imprévisibles).

En résumé, la douleur à court terme liée à la conversion des scripts en vue de l’utilisation des nouveaux cmdlets sera largement compensée par des gains à long terme en termes de performances et de fiabilité. C’est tout simplement la bonne chose à faire, et toute personne qui propose d’écrire du code en utilisant les anciennes cmdlets devrait être invitée à reconsidérer ses options avec juste un soupçon de force.

Et ai-je mentionné que le module de gestion d’Exchange Online supporte Ubuntu Linux ? Bon, peut-être que ce n’est pas si important pour ce public, mais c’est vrai.

L’utilisation de PowerShell en accès Web est-elle pratique ?

PowerShell en accès Web : est-ce pratique ?

New-DistributionGroup : Une cmdlet PowerShell incomprise

New-DistributionGroup : Une cmdlet PowerShell incomprise

PowerShell – Une introduction aux principes de base

PowerShell – Une introduction aux principes de base

Les 6 principales commandes PowerShell pour gérer Office 365

Les 6 principales commandes PowerShell pour gérer Office 365

Get-ExoMailboxPowershellscripts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *