À propos du module PowerShell Exchange Online

Le module PowerShell Exchange Online utilise l’authentification moderne et fonctionne avec ou sans authentification multifacteur (MFA) pour la connexion à tous les environnements PowerShell liés à Exchange dans Microsoft 365 : Exchange Online PowerShell, Sécurité & Conformité PowerShell et Exchange Online Protection autonome (EOP) PowerShell.

Pour obtenir des instructions de connexion à l’aide du module, consultez les articles suivants :

Le reste de cet article explique comment le module fonctionne, comment installer et maintenir le module, et les cmdlets optimisés d'Exchange Online qui sont disponibles dans le module.

Conseil

La version 3.0.0 et les versions ultérieures (2022) sont appelées Exchange Online module PowerShell V3 (abrégée en module EXO V3). La version 2.0.5 et les versions antérieures (2021) étaient appelées Exchange Online module PowerShell V2 (abrégé en module EXO V2).

Connexions d’API REST dans le module EXO V3

Exchange Online PowerShell et sécurité & Conformité PowerShell utilise désormais des connexions d’API REST pour toutes les applets de commande :

  • Exchange Online PowerShell : module EXO V3 v3.0.0 ou version ultérieure.
  • Sécurité & Conformité PowerShell : module EXO V3 v3.2.0 ou version ultérieure.

Les connexions d’API REST nécessitent les modules PowerShellGet et PackageManagement. Pour plus d’informations, consultez PowerShellObtenir des connexions REST dans Windows.

Les applets de commande dans les connexions d’API REST présentent les avantages suivants par rapport à leurs équivalents historiques :

  • Plus sécurisé : prise en charge intégrée de l’authentification moderne et aucune dépendance à l’égard de la session PowerShell distante. PowerShell sur votre ordinateur client n’a pas besoin de l’authentification de base dans WinRM.
  • Plus fiable : les défaillances temporaires utilisent des nouvelles tentatives intégrées, de sorte que les échecs ou les retards sont réduits. Par exemple :
    • Défaillances dues à des retards réseau.
    • Retards dus à des requêtes volumineuses qui prennent beaucoup de temps.
  • Meilleures performances : les connexions d’API REST évitent de configurer un runspace PowerShell.

Les avantages des applets de commande dans les connexions d’API REST sont décrits dans le tableau suivant :

  Applets de commande PowerShell distantes Applets de commande Get-EXO* Applets de commande de l’API REST
Sécurité Moins sécurisé Hautement sécurisé Hautement sécurisé
Performances Performances faibles Hautes performances Performances moyennes
Fiabilité Moins fiable Très fiable Très fiable
Les fonctionnalités Tous les paramètres et propriétés de sortie disponibles Paramètres et propriétés de sortie disponibles limités Tous les paramètres et propriétés de sortie disponibles

Les applets de commande d’API REST ont les mêmes noms d’applet de commande et fonctionnent comme leurs équivalents PowerShell distants. Vous n’avez donc pas besoin de mettre à jour les noms ou paramètres des applets de commande dans les scripts plus anciens.

Conseil

L’applet de commande Invoke-Command ne fonctionne pas dans les connexions d’API REST. Pour obtenir d’autres solutions, consultez Solutions de contournement pour les scénarios de Invoke-Command dans les connexions d’API REST.

Les connexions d’authentification de base (PowerShell à distance) sont déconseillées dans Exchange Online PowerShell et Sécurité & Conformité. Pour plus d’informations, consultez ici et ici.

Quelques applets de commande dans Exchange Online PowerShell ont été mises à jour avec le commutateur expérimental UseCustomRouting dans les connexions d’API REST. L’utilisation de ce commutateur a pour effet d’acheminer directement la commande vers le serveur de boîte aux lettres requis et peut améliorer les performances globales. Utilisez le commutateur UseCustomRouting de manière expérimentale.

  • Lorsque vous utilisez le commutateur UseCustomRoutingSwitch, vous ne pouvez utiliser que les valeurs suivantes pour l’identité de la boîte aux lettres :

    • Nom d’utilisateur principal (UPN)
    • Adresse électronique
    • GUID de la boîte aux lettres
  • Le commutateur UseCustomRouting est disponible uniquement sur les applets de commande PowerShell Exchange Online suivantes dans les connexions d’API REST :

    • Get-Clutter
    • Get-FocusedInbox
    • Get-InboxRule
    • Get-MailboxAutoReplyConfiguration
    • Get-MailboxCalendarFolder
    • Get-MailboxFolderPermission
    • Get-MailboxFolderStatistics
    • Get-MailboxMessageConfiguration
    • Get-MailboxPermission
    • Get-MailboxRegionalConfiguration
    • Get-MailboxStatistics
    • Get-MobileDeviceStatistics
    • GetUserPhoto
    • Remove-CalendarEvents
    • Set-Clutter
    • Set-FocusedInbox
    • Set-MailboxRegionalConfiguration
    • Set-UserPhoto
  • Utilisez l’applet de commande Get-ConnectionInformation pour obtenir des informations sur les connexions d’API REST à Exchange Online PowerShell et Sécurité & Compliance PowerShell. Cette applet de commande est requise, car l’applet de commande Get-PSSession dans Windows PowerShell ne retourne pas d’informations pour les connexions d’API REST.

    Les scénarios où vous pouvez utiliser Get-ConnectionInformation sont décrits dans le tableau suivant :

    Scénario Sortie attendue
    Exécutez après les commandes Connect-ExchangeOnline ou Connect-IPPSSession pour les connexions d’API REST. Retourne un objet d’informations de connexion.
    Exécutez après plusieurs commandes Connect-ExchangeOnline ou Connect-IPPSSession pour les connexions d’API REST. Retourne une collection d’objets d’informations de connexion.
  • Utilisez le commutateur SkipLoadingFormatData sur l’applet de commande Connect-ExchangeOnline pour éviter de charger des données de format et exécuter les commandes Connect-ExchangeOnline plus rapidement.

  • Les applets de commande sauvegardées par l’API REST ont un délai d’expiration de 15 minutes, ce qui peut affecter les opérations en bloc. Par exemple, la commande Update-DistributionGroupMember suivante pour mettre à jour 10 000 membres d’un groupe de distribution peut expirer :

    $Members = @("member1","member2",...,"member10000")
    
    Update-DistributionGroupMember -Identity DG01 -Members $Members
    

    Utilisez plutôt la commande Update-DistributionGroupMember pour mettre à jour moins de membres, puis ajoutez les membres restants individuellement à l’aide d’une commande Add-DistributionGroupMember . Par exemple :

    Update-DistributionGroupMember -Identity DG01 -Members $Members[0..4999]
    
    $Remaining = $Members[-5000..-1]
    
    foreach ($Member in $Remaining)
    
    {
       Add-DistributionGroupMember -Identity DG01 -Member $Member
    }
    

Pour plus d’informations sur les nouveautés du module EXO V3, consultez la section Notes de publication plus loin dans cet article.

Signaler des bogues et des problèmes pour les versions préliminaires du module PowerShell Exchange Online

Conseil

Pour les versions en disponibilité générale du module, n’utilisez pas l’adresse e-mail suivante pour signaler les problèmes. Les messages relatifs aux versions ga du module ne seront pas répondus. Au lieu de cela, ouvrez un ticket de support.

Pour les versions préliminaires du module, utilisez exocmdletpreview[at]service[dot]microsoft[dot]com pour signaler les problèmes que vous pouvez rencontrer. Veillez à inclure les fichiers journaux dans votre message électronique. Pour générer les fichiers journaux, remplacez Path> par <un dossier de sortie, puis exécutez la commande suivante :

Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path> -LogLevel All

Applets de commande dans le module PowerShell Exchange Online

Le module EXO contient neuf applets de commande Get-EXO* exclusives qui sont optimisées pour accélérer les scénarios de récupération de données en bloc (des milliers et des milliers d’objets) dans Exchange Online PowerShell. Les applets de commande améliorées dans le module sont répertoriées dans le tableau suivant :

Applet de commande du module EXO Ancienne applet de commande liée
Get-EXOMailbox Get-Mailbox
Get-EXORecipient Get-Recipient
Get-EXOCasMailbox Get-CASMailbox
Get-EXOMailboxPermission Get-MailboxPermission
Get-EXORecipientPermission Get-RecipientPermission
Get-EXOMailboxStatistics Get-MailboxStatistics
Get-EXOMailboxFolderStatistics Get-MailboxFolderStatistics
Get-EXOMailboxFolderPermission Get-MailboxFolderPermission
Get-EXOMobileDeviceStatistics Get-MobileDeviceStatistics

Conseil

Si vous ouvrez plusieurs connexions à Exchange Online PowerShell dans la même fenêtre, les applets de commande Get-EXO* sont toujours associées à la dernière connexion (la plus récente) Exchange Online PowerShell. Exécutez la commande suivante pour rechercher la session d’API REST où les applets de commande Get-EXO* sont exécutées : Get-ConnectionInformation | Where-Object {$_.ConnectionUsedForInbuiltCmdlets -eq $true}.

Les applets de commande liées à la connexion dans le module sont répertoriées dans le tableau suivant :

Applet de commande du module EXO Ancienne applet de commande liée Commentaires
Connect-ExchangeOnline Connect-EXOPSSession dans V1 du module
ou
New-PSSession
Connect-IPPSSession Connect-IPPSSession dans V1 du module
Disconnect-ExchangeOnline Remove-PSSession
Get-ConnectionInformation Get-PSSession Disponible dans la version 3.0.0 ou ultérieure.

Conseil

L’utilisation fréquente des applets de commande Connect-ExchangeOnline et Disconnect-ExchangeOnline dans une session ou un script PowerShell unique peut entraîner une fuite de mémoire. La meilleure façon d’éviter ce problème consiste à utiliser le paramètre CommandName sur l’applet de commande Connect-ExchangeOnline pour limiter les applets de commande utilisées dans la session.

Les applets de commande Exchange Online diverses qui se trouvent dans le module sont répertoriées dans le tableau suivant :

Cmdlet Commentaires
Get-DefaultTenantBriefingConfig Disponible dans la version 3.2.0 ou ultérieure.
Set-DefaultTenantBriefingConfig Disponible dans la version 3.2.0 ou ultérieure.
Get-DefaultTenantMyAnalyticsFeatureConfig Disponible dans la version 3.2.0 ou ultérieure.
Set-DefaultTenantMyAnalyticsFeatureConfig Disponible dans la version 3.2.0 ou ultérieure.
Get-MyAnalyticsFeatureConfig Disponible dans la version 2.0.4 ou ultérieure.
Set-MyAnalyticsFeatureConfig Disponible dans la version 2.0.4 ou ultérieure.
Get-UserBriefingConfig Remplacé par get-MyAnalyticsFeatureConfig.
Set-UserBriefingConfig Remplacé par Set-MyAnalyticsFeatureConfig.
Get-VivaInsightsSettings Disponible dans v2.0.5-Preview2 ou version ultérieure.
Set-VivaInsightsSettings Disponible dans v2.0.5-Preview2 ou version ultérieure.
Get-VivaModuleFeature Disponible dans la version 3.2.0 ou ultérieure.
Get-VivaModuleFeatureEnablement Disponible dans la version 3.2.0 ou ultérieure.
Add-VivaModuleFeaturePolicy Disponible dans la version 3.2.0 ou ultérieure.
Get-VivaModuleFeaturePolicy Disponible dans la version 3.2.0 ou ultérieure.
Remove-VivaModuleFeaturePolicy Disponible dans la version 3.2.0 ou ultérieure.
Update-VivaModuleFeaturePolicy Disponible dans la version 3.2.0 ou ultérieure.
Add-VivaOrgInsightsDelegatedRole Disponible dans v3.7.0-Preview1 ou version ultérieure.
Get-VivaOrgInsightsDelegatedRole Disponible dans v3.7.0-Preview1 ou version ultérieure.
Remove-VivaOrgInsightsDelegatedRole Disponible dans v3.7.0-Preview1 ou version ultérieure.

Installer et gérer le module PowerShell Exchange Online

Vous téléchargez le module à partir de la galerie PowerShell à l’adresse https://www.powershellgallery.com/packages/ExchangeOnlineManagement/.

Les procédures de cette section expliquent comment installer, mettre à jour et désinstaller le module.

Systèmes d’exploitation pris en charge pour le module PowerShell Exchange Online

Les dernières versions du module sont officiellement prises en charge dans PowerShell 7 sur Windows, Linux et Apple macOS.

Plus précisément, la version 2.0.4 ou ultérieure est prise en charge dans PowerShell 7.0.3 ou ultérieur.

Pour obtenir plus d’informations sur PowerShell 7, consultez Annonce Powershell 7.0.

Apple macOS

Le module est pris en charge dans les versions suivantes de macOS :

  • macOS 11 Big Sur ou version ultérieure
  • macOS 10.15 Catalina
  • macOS 10.14 Mojave

Pour obtenir des instructions sur l’installation de PowerShell 7 sur macOS, consultez Installation de PowerShell sur macOS.

Comme décrit dans l’article d’installation, vous devez installer OpenSSL, qui est requis pour WSMan.

Après avoir installé PowerShell 7 et OpenSSL, suivez les étapes suivantes :

  1. Exécutez PowerShell en tant que superutiliseur : sudo pwsh

  2. Dans la session de superutiliseur PowerShell, exécutez les commandes suivantes :

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    Si vous y êtes invité, acceptez PSGallery comme source pour les cmdlets.

Vous pouvez maintenant effectuer les prérequis PowerShell standard et installer le module PowerShell Exchange Online.

Linux

Le module est officiellement pris en charge dans les distributions linux suivantes :

  • Ubuntu 24.04 LTS
  • Ubuntu 20.04 LTS
  • Ubuntu 18.04 LTS

Pour obtenir des instructions sur l’installation de PowerShell 7 sur Linux, consultez Installation de PowerShell sur Linux.

Après avoir installé PowerShell 7, effectuez les étapes suivantes :

  1. Exécutez PowerShell en tant que superutiliseur : sudo pwsh

  2. Dans la session de superutiliseur PowerShell, exécutez les commandes suivantes :

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    Si vous y êtes invité, acceptez PSGallery comme source pour les cmdlets.

Vous pouvez maintenant effectuer les prérequis PowerShell standard et installer le module PowerShell Exchange Online.

Remarque

Si vous vous connectez à Exchange Online PowerShell à partir d’un réseau situé derrière un serveur proxy, le module EXO V2 (version v2.0.5 ou antérieure) ne fonctionne pas dans Linux. Vous devez utiliser le module EXO V3 (v3.0.0 ou version ultérieure) dans Linux pour vous connecter à partir d’un réseau situé derrière un serveur proxy.

Windows

Toutes les versions du module sont prises en charge dans Windows PowerShell 5.1.

PowerShell 7 sur Windows nécessite la version 2.0.4 ou ultérieure.

La version 2.0.5 ou ultérieure du module nécessite microsoft .NET Framework 4.7.2 ou version ultérieure pour se connecter. Sinon, vous obtenez une System.Runtime.InteropServices.OSPlatform erreur. Cette exigence ne doit pas être un problème dans les versions actuelles de Windows. Pour plus d’informations sur les versions de Windows qui prennent en charge .NET Framework 4.7.2, consultez cet article.

Windows PowerShell exigences et la prise en charge des modules dans les versions antérieures de Windows sont décrits dans la liste suivante :

  • Windows 8.1¹

  • Windows Server 2012 ou Windows Server 2012 R2¹

  • Windows 7 Service Pack 1 (SP1)² ³ ⁴

  • Windows Server 2008 R2 SP1² ³ ⁴

  • ¹ PowerShell 7 sur cette version de Windows nécessite le Windows 10 Runtime C universel (CRT).

  • ² La prise en charge de cette version de Windows est terminée et n’est désormais prise en charge que dans les machines virtuelles Azure.

  • ³ Cette version de Windows prend uniquement en charge la version 2.0.3 ou les versions antérieures du module.

  • ⁴ Windows PowerShell 5.1 sur cette version de Windows nécessite .NET Framework 4.5 ou version ultérieure et la Windows Management Framework 5.1. Pour plus d’informations, voir Windows Management Framework 5,1.

Prérequis pour le module PowerShell Exchange Online

Définissez la stratégie d’exécution PowerShell sur RemoteSigned

Conseil

Les paramètres de cette section s’appliquent à toutes les versions de PowerShell sur tous les systèmes d’exploitation.

PowerShell doit être configuré pour l’exécution des scripts, ce qui n’est pas le cas par défaut. Vous obtenez l’erreur suivante lorsque vous essayez de vous connecter :

Impossible de charger des fichiers, car l’exécution de scripts est désactivée sur ce système. Fournissez un certificat valide avec lequel signer les fichiers.

Pour exiger que tous les scripts PowerShell téléchargés depuis Internet soient signés par un éditeur approuvé, exécutez la commande suivante dans une fenêtre PowerShell avec élévation de privilèges (c’est-à-dire une fenêtre PowerShell ouverte en sélectionnant Exécuter en tant qu’administrateur) :

Set-ExecutionPolicy RemoteSigned

Pour plus d’informations sur les stratégies d’exécution, consultez À propos des stratégies d’exécution.

Activer l’authentification de base dans WinRM

Importante

Les connexions d’API REST ne nécessitent pas d’authentification de base dans WinRM, comme décrit dans cette section. Comme décrit plus haut dans cet article, l’accès à l’authentification de base (PowerShell à distance) à Exchange Online PowerShell et à La sécurité & Conformité de PowerShell est déconseillé. Les informations contenues dans cette section sont conservées à des fins historiques.

Pour les connexions PowerShell distantes qui n’utilisent pas l’API REST (qui sont désormais impossibles), WinRM doit autoriser l’authentification de base. Nous n’envoyons pas la combinaison nom d’utilisateur et mot de passe. L’en-tête d’authentification de base est nécessaire pour envoyer le jeton OAuth de la session, car l’implémentation côté client de WinRM ne prend pas en charge OAuth.

Pour vérifier que l’authentification de base est activée pour WinRM, exécutez cette commande suivante dans une Invite de commandes ou Windows PowerShell :

Remarque

Les commandes suivantes nécessitent l’activation de WinRM. Pour activer WinRM, exécutez la commande suivante : winrm quickconfig.

winrm get winrm/config/client/auth

Si vous ne voyez pas la valeur Basic = true, vous devez exécuter l’une des commandes suivantes pour activer l’authentification de base pour WinRM :

  • Dans une invite de commandes :

    winrm set winrm/config/client/auth @{Basic="true"}
    
  • Dans Windows PowerShell :

    winrm set winrm/config/client/auth '@{Basic="true"}'
    
  • Dans Windows PowerShell pour modifier le Registre :

    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client' -Name 'AllowBasic' -Type DWord -Value '1'
    

Si l’authentification de base pour WinRM est désactivée, vous obtenez l’une des erreurs suivantes lorsque vous essayez de vous connecter à l’aide d’une connexion d’authentification de base (PowerShell à distance) :

Le client WinRM ne peut pas traiter la demande. L’authentification de base est actuellement désactivée dans la configuration du client. Modifiez la configuration du client, puis renouvelez la demande.

La création d’une session Powershell a échoué en utilisant OAuth.

PowerShellObtenir des connexions d’API REST dans Windows

Les connexions d’API REST dans Windows nécessitent le module PowerShellGet et, par dépendance, le module PackageManagement. La prise en compte de ces modules concerne davantage PowerShell 5.1 que PowerShell 7, mais toutes les versions de PowerShell bénéficient de l’installation des dernières versions des modules. Pour obtenir des instructions d’installation et de mise à jour, consultez Installation de PowerShellGet sur Windows.

Conseil

Les versions bêta des modules PackageManagement ou PowerShellGet peuvent entraîner des problèmes de connexion. Si vous rencontrez des problèmes de connexion, vérifiez que les versions bêta des modules ne sont pas installées en exécutant la commande suivante : Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions.

Si PowerShellGet n’est pas installé lorsque vous essayez de créer une connexion d’API REST, vous obtenez l’erreur suivante lorsque vous essayez de vous connecter :

Impossible de trouver un Update-Manifest d’applet de commande

Installer le module PowerShell Exchange Online

Pour installer le module pour la première fois, procédez comme suit :

  1. Installez ou mettez à jour le module PowerShellGet, comme décrit dans Installation de PowerShellGet.

  2. Fermez puis rouvrez la fenêtre Windows PowerShell.

  3. Vous pouvez maintenant utiliser l’applet de commande Install-Module pour installer le module à partir du PowerShell Gallery. En règle générale, vous souhaitez obtenir la dernière version publique du module, mais vous pouvez également installer une préversion si elle est disponible.

    • Pour installer la dernière version publique du module, exécutez l’une des commandes suivantes :

      • Dans une fenêtre PowerShell avec des privilèges élevés (tous les utilisateurs) :

        Install-Module -Name ExchangeOnlineManagement
        
      • Uniquement pour le compte d’utilisateur actuel :

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • Pour afficher les versions d’évaluation disponibles du module, exécutez la commande suivante :

      Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
      
    • Pour installer la dernière préversion disponible du module, exécutez l’une des commandes suivantes :

      • Dans une fenêtre PowerShell avec des privilèges élevés (tous les utilisateurs) :

        Install-Module -Name ExchangeOnlineManagement -AllowPrerelease
        
      • Uniquement pour le compte d’utilisateur actuel :

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
        
    • Pour installer une préversion spécifique du module, remplacez PreviewVersion> par <la valeur nécessaire, puis exécutez l’une des commandes suivantes :

      • Dans une fenêtre PowerShell avec des privilèges élevés (tous les utilisateurs) :

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
        
      • Uniquement pour le compte d’utilisateur actuel :

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease -Scope CurrentUser
        

    Lorsque vous avez terminé, entrez Y pour accepter le contrat de licence.

Pour obtenir des informations détaillées sur la syntaxe et les paramètres, consultez Module d’installation.

Mettre à jour le module PowerShell Exchange Online

Si le module est déjà installé sur votre ordinateur, vous pouvez utiliser les procédures de cette section pour mettre à jour le module.

  1. Pour afficher la version du module actuellement installé et son emplacement d’installation, exécutez la commande suivante :

    Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation
    

    Si le module est installé dans C :\Program Files\WindowsPowerShell\Modules, il est installé pour tous les utilisateurs. Si le module est installé dans votre dossier Documents, il est installé uniquement pour le compte d’utilisateur actuel.

  2. Vous pouvez utiliser l’applet de commande Update-Module pour mettre à jour le module à partir de la PowerShell Gallery. En règle générale, vous souhaitez obtenir la dernière version publique du module, mais vous pouvez également effectuer une mise à niveau vers une préversion si elle est disponible.

    • Pour effectuer une mise à niveau vers la dernière version publique du module, exécutez l’une des commandes suivantes en fonction de la façon dont vous avez installé le module à l’origine (tous les utilisateurs et uniquement pour le compte d’utilisateur actuel) :

      • Dans une fenêtre PowerShell avec des privilèges élevés (tous les utilisateurs) :

        Update-Module -Name ExchangeOnlineManagement
        
      • Uniquement pour le compte d’utilisateur actuel :

        Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • Pour effectuer une mise à niveau vers une préversion du module, vous pouvez effectuer une mise à niveau vers la dernière préversion disponible ou utiliser le paramètre RequiredVersion pour effectuer une mise à niveau vers une préversion spécifique.

      • Pour afficher les versions d’évaluation disponibles du module, exécutez la commande suivante :

        Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
        
      • Pour effectuer une mise à niveau vers la dernière préversion disponible du module, exécutez l’une des commandes suivantes :

        • Dans une fenêtre PowerShell avec des privilèges élevés (tous les utilisateurs) :

          Update-Module -Name ExchangeOnlineManagement -AllowPrerelease
          
        • Uniquement pour le compte d’utilisateur actuel :

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
          
      • Pour effectuer une mise à niveau vers une préversion spécifique du module, remplacez <PreviewVersion> par la valeur nécessaire, puis exécutez l’une des commandes suivantes :

        • Dans une fenêtre PowerShell avec des privilèges élevés (tous les utilisateurs) :

          Update-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
          
        • Uniquement pour le compte d’utilisateur actuel :

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -RequiredVersion <PreviewVersion> -AllowPrerelease
          

    Lorsque vous avez terminé, entrez Y pour accepter le contrat de licence.

  3. Pour vérifier que la mise à jour a réussi, exécutez les commandes suivantes pour vérifier les informations de version du module installé :

    Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement
    

Pour obtenir des informations détaillées sur la syntaxe et les paramètres, consultez Module de mise à jour.

Résoudre les problèmes d’installation du module PowerShell Exchange Online

  • Vous recevez l'une des erreurs suivantes :

    Le module « ExchangeOnlineManagement » spécifié avec PowerShellGetFormatVersion «< version> » n’est pas pris en charge par la version actuelle de PowerShellGet. Téléchargez la dernière version du module PowerShellGet pour installer ce module, « ExchangeOnlineManagement ».

    AVERTISSEMENT : Impossible de télécharger à partir de l’URI 'https://go.microsoft.com/fwlink/?LinkID=627338& ; clcid=0x409' à ''.

    AVERTISSEMENT : impossible de télécharger la liste des fournisseurs disponibles. Vérifiez votre connexion Internet.

    Mettez à jour votre installation du module PowerShellGet vers la dernière version, comme décrit dans Installation de PowerShellGet. Veillez à fermer, puis à rouvrir la fenêtre PowerShell avant d’essayer de nouveau de mettre à jour le module ExchangeOnlineManagement.

  • Vous recevez l'erreur suivante :

    Aucune correspondance n’a été trouvée pour les critères de recherche et le nom de module spécifiés « ExchangeOnlineManagement ». Essayez d’exécuter Get-PSRepository pour voir tous les référentiels de modules inscrits disponibles.

    Le référentiel par défaut des modules PowerShell n’est pas défini sur PSGallery. Pour corriger cette erreur, exécutez la commande suivante :

    Register-PSRepository -Default
    
  • Depuis avril 2020, la galerie PowerShell prend en charge uniquement les connexions utilisant TLS 1.2 ou des versions ultérieures. Si vous souhaitez en savoir plus, veuillez consulter la rubrique PowerShell Gallery TLS Support.

    Pour vérifier vos paramètres actuels dans Microsoft .NET Framework, exécutez la commande suivante dans Windows PowerShell :

    [Net.ServicePointManager]::SecurityProtocol
    

    Comme décrit dans l’article sur le support TLS de la galerie PowerShell, pour modifier temporairement le protocole de sécurité en TLS 1.2, puis installer les modules PowerShellGet ou ExchangeOnlineManagement, exécutez la commande suivante dans Windows PowerShell avant d’installer le module :

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    

    Pour activer définitivement le chiffrement fort dans Microsoft.NET Framework version 4.x ou ultérieure, exécutez l’une des commandes suivantes en fonction de votre architecture Windows :

    • x64 :

      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
      
    • x86 :

      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
      

    Si vous souhaitez en savoir plus, veuillez consulter la rubrique SchUseStrongCrypto.

Désinstaller le module PowerShell Exchange Online

Pour afficher la version du module actuellement installé et son emplacement d’installation, exécutez la commande suivante :

Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation

Si le module est installé dans C :\Program Files\WindowsPowerShell\Modules, il a été installé pour tous les utilisateurs. Si le module est installé dans votre dossier Documents, il a été installé uniquement pour le compte d’utilisateur actuel.

Pour désinstaller le module, exécutez la commande suivante dans l’un des environnements suivants en fonction de la façon dont vous avez installé le module à l’origine (tous les utilisateurs et uniquement pour le compte d’utilisateur actuel) :

  • Dans une fenêtre PowerShell avec élévation de privilèges (tous les utilisateurs).

  • Dans une fenêtre PowerShell normale (uniquement pour le compte d’utilisateur actuel).

    Uninstall-Module -Name ExchangeOnlineManagement
    

Pour obtenir des informations détaillées sur la syntaxe et les paramètres, consultez Module de désinstallation.

Propriétés et jeux de propriétés dans le module PowerShell Exchange Online

Les applets de commande Exchange Online traditionnelles retournent toutes les propriétés d’objet possibles, y compris de nombreuses propriétés vides ou inintéressantes. Ce comportement entraîne une dégradation des performances (plus le calcul du serveur et une charge réseau supplémentaire). Vous avez rarement besoin de l’ensemble des propriétés dans le résultat de l’applet de commande.

Les applets de commande Get-EXO* du module ont classé les propriétés de sortie. Au lieu de donner une importance égale à toutes les propriétés et de les retourner dans tous les scénarios, nous avons catégorisé des propriétés associées spécifiques en jeux de propriétés. Ces jeux de propriétés sont des compartiments de deux propriétés associées ou plus sur l’applet de commande.

Les applets de commande Get-EXO* les plus volumineuses et les plus utilisées utilisent des jeux de propriétés :

Dans ces applets de commande, les jeux de propriétés sont contrôlés par les paramètres suivants :

Vous pouvez utiliser le paramètres PropertySets et Properties dans la même commande.

Nous avons également inclus un jeu de propriétés Minimum qui inclut un ensemble minimal de propriétés requises pour la sortie de l’applet de commande (par exemple, les propriétés d’identité). Les propriétés des jeux de propriétés Minimum sont également décrites dans Jeux de propriétés dans Exchange Online applets de commande du module PowerShell.

  • Si vous n’utilisez pas les paramètres PropertySets ou Properties, vous obtenez automatiquement les propriétés dans le groupe de propriétés minimum.
  • Si vous utilisez les paramètres PropertySets ou Properties, vous obtenez les propriétés spécifiées et les propriétés dans le groupe de propriétés minimum.

Dans les deux cas, la sortie de l’applet de commande contient beaucoup moins de propriétés et les résultats sont retournés beaucoup plus rapidement.

Par exemple, une fois que vous vous êtes connecté à Exchange Online PowerShell, l’exemple suivant retourne uniquement les propriétés du jeu de propriétés Minimum pour les 10 premières boîtes aux lettres.

Get-EXOMailbox -ResultSize 10

En revanche, la sortie de la même commande Get-Mailbox renvoie au moins 230 propriétés pour chacune des 10 premières boîtes aux lettres.

Remarque

Bien que le paramètre PropertySets accepte la valeur tout, nous vous déconseillons fortement d’utiliser cette valeur pour récupérer toutes les propriétés, car cela ralentit la commande et réduit la fiabilité. Utilisez toujours les paramètresPropertySets et Properties pour récupérer le nombre minimal de propriétés requises pour votre scénario.

Pour plus d’informations sur le filtrage dans le module, consultez Filtres dans le module PowerShell Exchange Online.

Notes de publication

Sauf indication contraire, la version actuelle du module PowerShell Exchange Online contient toutes les fonctionnalités des versions précédentes.

Version actuelle

Version 3.6.0

  • Get-VivaModuleFeature retourne désormais des informations sur les types d’identités pour lesquelles la fonctionnalité prend en charge la création de stratégies (par exemple, les utilisateurs, les groupes ou l’ensemble du locataire).
  • Les applets de commande pour Viva la gestion de l’accès aux fonctionnalités gèrent désormais les défis liés aux revendications d’évaluation continue de l’accès (CAE).
  • Ajout d’un correctif pour le problème de compatibilité avec le module Microsoft.Graph.

Versions précédentes

Version 3.5.1

  • Correctifs de bogues dans Get-EXOMailboxPermission et Get-EXOMailbox.
  • Le module a été mis à niveau pour s’exécuter sur .NET 8, remplaçant la version précédente basée sur .NET 6.
  • Améliorations apportées à Add-VivaModuleFeaturePolicy.

Version 3.5.0

  • Nouvelle applet de commande Get-VivaFeatureCategory .
  • Ajout de la prise en charge des opérations de stratégie au niveau de la catégorie dans Viva gestion de l’accès aux fonctionnalités (VFAM).
  • Nouvelle propriété IsFeatureEnabledByDefault dans la sortie de Get-VivaModuleFeaturePolicy. La valeur de cette propriété indique l’état d’activation par défaut pour les utilisateurs du locataire lorsqu’aucune stratégie de locataire ou d’utilisateur/groupe n’a été créée.

Version 3.4.0

  • Correctifs de bogues dans Connect-ExchangeOnline, Get-EXORecipientPermission et Get-EXOMailboxFolderPermission.
  • Le paramètre SigningCertificate dans Connect-ExchangeOnline prend désormais en charge le mode CLM (Constrained Language Mode).

Version 3.3.0

  • Paramètre SkipLoadingCmdletHelp sur Connect-ExchangeOnline pour prendre en charge le chargement des fichiers d’aide des applets de commande.
  • La variable EXO_LastExecutionStatus globale est disponible pour case activée le status de la dernière applet de commande exécutée.
  • Correctifs de bogues dans Connect-ExchangeOnline et Connect-IPPSSession.
  • Paramètre IsUserControlEnabled sur Add-VivaModuleFeaturePolicy et Update-VivaModuleFeaturePolicy pour prendre en charge l’activation des contrôles utilisateur par stratégie pour les fonctionnalités intégrées à Viva gestion de l’accès aux fonctionnalités.

Version 3.2.0

  • Nouvelles applets de commande :
    • Get-DefaultTenantBriefingConfig et Set-DefaultTenantBriefingConfig.
    • Get-DefaultTenantMyAnalyticsFeatureConfig et Set-DefaultTenantMyAnalyticsFeatureConfig.
    • Get-VivaModuleFeature, Get-VivaModuleFeatureEnablement, Add-VivaModuleFeaturePolicy, Get-VivaModuleFeaturePolicy, Remove-VivaModuleFeaturePolicy et Update-VivaModuleFeaturePolicy.
  • Prise en charge des connexions d’API REST pour PowerShell sécurité & conformité.
  • Paramètre ConnectionId sur Get-ConnectionInformation et Disconnect-ExchangeOnline :
    • Obtenez des informations de connexion pour des connexions d’API REST spécifiques.
    • Déconnexion sélective pour les connexions d’API REST.
  • Le paramètre SigningCertificate sur Connect-ExchangeOnline vous permet de signer les fichiers de format (*). Format.ps1xml) ou les fichiers de module de script (.psm1) dans le module temporaire que Connect-ExchangeOnline crée avec un certificat client à utiliser dans toutes les stratégies d’exécution PowerShell.
  • Correctifs de bogues dans Connect-ExchangeOnline.

Version 3.1.0

  • Paramètre AccessToken disponible dans Connect-ExchangeOnline.
  • Correctifs de bogues dans Connect-ExchangeOnline et Get-ConnectionInformation.
  • Correctif de bogue dans Connect-IPPSSession pour la connexion à La sécurité & Conformité PowerShell à l’aide de CertificateThumbprint.

Version 3.0.0 (versions d’évaluation appelées v2.0.6-PreviewX)

  • Fonctionnalités déjà décrites dans les connexions d’API REST dans la section du module EXO V3 :
    • Authentification basée sur les certificats pour Sécurité & Conformité PowerShell (version 2.0.6-Preview5 ou ultérieure).
    • Applet de commande Get-ConnectionInformation pour les connexions REST (version 2.0.6-Preview7 ou ultérieure).
    • Commutateur SkipLoadingFormatData sur l’applet de commande Connect-ExchangeOnline pour les connexions REST (version 2.0.6-Preview8 ou ultérieure).
  • Le paramètre DelegatedOrganization fonctionne dans l’applet de commande Connect-IPPSSession tant que vous utilisez également le paramètre AzureADAuthorizationEndpointUri dans la commande.
  • Certaines applets de commande qui servaient à demander une confirmation dans des scénarios spécifiques ne le font plus. Par défaut, l’applet de commande s’exécute jusqu’à la fin.
  • Le format de l’erreur retournée à partir de l’échec de l’exécution de l’applet de commande est légèrement modifié. L’exception contient désormais plus de données (par exemple, le type d’exception) et ne FullyQualifiedErrorId contient pas le FailureCategory. Le format de l’erreur est susceptible d’être modifié.

Version 2.0.5

  • Nouvelles applets de commande Get-OwnerlessGroupPolicy et Set-OwnerlessGroupPolicy pour gérer les groupes Microsoft 365 sans propriétaire.

    Remarque

    Bien que les applets de commande soient disponibles dans le module, la fonctionnalité est uniquement disponible pour les membres d’une préversion privée.

  • Nouvelles applets de commande Get-VivaInsightsSettings et Set-VivaInsightsSettings pour contrôler l’accès des utilisateurs aux fonctionnalités Headspace dans Viva Insights.

Version 2.0.4

  • PowerShell 7 est officiellement pris en charge dans Windows, Linux et Apple macOS, comme décrit dans la section Prérequis pour le module PowerShell Exchange Online de cet article.

  • Le module dans PowerShell 7 prend en charge l’authentification unique (SSO) basée sur un navigateur et d’autres méthodes de connexion. Pour plus d’informations, consultez Méthodes de connexion exclusive PowerShell 7.

  • Les applets de commande Get-UserAnalyticsConfig et Set-UserAnalyticsConfig ont été remplacées par Get-MyAnalyticsConfig et Set-MyAnalyticsConfig. En outre, vous pouvez configurer l’accès au niveau de la fonctionnalité. Pour plus d’informations, voir Configurer MyAnalytics.

  • Stratégie en temps réel et application de la sécurité dans toute l’authentification basée sur l’utilisateur. L’évaluation continue de l’accès (CAE) est activée dans le module. En savoir plus sur les stratégies l’évaluation continue de l'accès ici.

  • Les propriétés LastUserActionTime et LastInteractionTime sont désormais disponibles dans la sortie de la cmdlet Get-NTMailboxStat individuals .

  • Le processus de signature interactive utilise désormais une méthode plus sécurisée pour récupérer des jetons d’accès à l’aide d’URL de réponse sans sécurité.

Version 2.0.3

  • Disponibilité générale de l’authentification basée sur les certificats (CBA), qui permet d’utiliser l’authentification moderne dans les scénarios d’écriture de script ou d’automatisation d’arrière-plan. Les emplacements de stockage de certificats disponibles sont les suivants :
  • Connectez-vous simultanément à Exchange Online PowerShell et à Security & Compliance PowerShell dans une seule fenêtre PowerShell.
  • Le nouveau paramètre CommandName vous permet de spécifier et de restreindre les applets de commande PowerShell Exchange Online importées dans une session. Cette option réduit l’encombrement mémoire pour les applications PowerShell à usage élevé.
  • Get-EXOMailboxFolderPermission prend désormais en charge ExternalDirectoryObjectID dans le paramètre Identité.
  • Latence optimisée du premier appel d’applet de commande v2. Résultats de laboratoire afficher la latence du premier appel a été réduite de 8 secondes à environ 1 seconde. Les résultats réels dépendent de la taille du résultat de l’applet de commande et de l’environnement client.

Version 1.0.1

  • Version disponible (GA) du module EXO v2. Il est stable et prêt à être utilisé dans les environnements de production.
  • L’applet de commande Get-EXOMobileDeviceStatistics prend désormais en charge le paramètre de Identité.
  • Fiabilité améliorée de la reconnexion automatique de session dans certains cas où un script était en cours d’exécution pendant ~ 50 minutes et a généré une erreur « cmdlet introuvable » en raison d’un bogue dans la logique de reconnexion automatique.
  • Problèmes de type de données fixes de deux attributs « User » et « MailboxFolderUser » fréquemment utilisés pour faciliter la migration de scripts.
  • Prise en charge améliorée des filtres, car il prend en charge quatre autres opérateurs : EndsWith, Contains, Not et NotLike support. Recherchez les attributs qui ne sont pas pris en charge dans les filtres dans le module PowerShell Exchange Online.

Version 0.4578.0

  • Ajout de la prise en charge de la configuration du courrier de briefing pour votre organisation au niveau de l’utilisateur avec les applets de commandeSet-UserBriefingConfig et Get-UserBriefingConfig.
  • Prise en charge du nettoyage de session avec l’applet de commande Disconnect-ExchangeOnline. Cette applet de commande est l’équivalent v2 de Get-PSSession | Remove-PSSession. En plus du nettoyage de l’objet session et des fichiers locaux, il supprime également le jeton d’accès du cache, lequel est utilisé pour l’authentification par rapport aux applets de commande v2.
  • Vous pouvez désormais utiliser FolderId comme paramètre d’identité dans Get-EXOMailboxFolderPermission. Vous pouvez obtenir la valeur de FolderId à l’aide de Get-MailboxFolder. Par exemple: Get-MailboxFolderPermission -Identity <UPN>:<Folder-Path>Get-MailboxFolderPermission -Identity <UPN>:\<Folder-Id>
  • Amélioration de la fiabilité de Get-EXOMailboxStatistics , car certaines erreurs de routage des requêtes qui ont conduit à des échecs ont été résolues.
  • Optimisation de l’utilisation de la mémoire lorsqu’une session est créée en réutilisant un module existant avec une nouvelle session au lieu d’en créer un à chaque importation d’une session.

Version 0.4368.1

  • Ajout de la prise en charge des applets de commande PowerShell de sécurité et de conformité à l'aide de l'applet de commande Connect-IPPSSession.
  • Il est possible de masquer la bannière d’annonce à l’aide du commutateur ShowBanner (-ShowBanner:$false).
  • Terminer l’exécution de l’applet de commande sur une exception cliente.
  • PowerShell distant contenait différents types de données complexes qui n’étaient intentionnellement pas pris en charge dans les applets de commande EXO pour améliorer les performances. Les différences entre les types de données non complexes entre les applets de commande PowerShell distantes et les applets de commande v2 ont été résolues afin d’autoriser la migration transparente des scripts de gestion.

Version 0.3582.0

  • Prise en charge du préfixe lors de la création de session :
    • Vous ne pouvez créer qu’une seule session à la fois qui contient des applets de commande préfixées.
    • Les applets de commande EXO V2 ne sont pas préfixées, car elles ont déjà le préfixe EXO. N’utilisez EXO donc pas comme préfixe.
  • Utilisez les applets de commande EXO v2 même si l’authentification de base WinRM est désactivée sur l’ordinateur client. Les connexions PowerShell distantes nécessitent l’authentification de base WinRM, et les applets de commande PowerShell distantes ne sont pas disponibles si l’authentification de base est désactivée dans WinRM.
  • Le paramètre Identity pour les applets de commande V2 prend désormais en charge Name et Alias. L’utilisation d’Alias ou name ralentit les performances des applets de commande V2. Nous vous déconseillons donc de les utiliser.
  • Problème résolu dans lequel le type de données des attributs renvoyés par l’applet de commande v2 était différent de celui des cmdlets PowerShell distantes. Nous avons encore peu d’attributs avec des types de données différents, et nous prévoyons de les gérer dans les mois à venir.
  • Correction d’un bogue : problème de reconnexion de sessions fréquentes lorsque Connect-ExchangeOnline a été appelé avec credentials ou UserPrincipalName

Version 0.3555.1

  • Correction d’un bogue dans lequel les applets de commande redirigés ont échoué en raison d’un problème d’authentification :

    Impossible d’appeler le pipeline, car l’espace d’exécution n’est pas dans l’état Ouvert. L’état actuel de l’instance d’exécution est « fermé ».

Version 0.3527.4

  • Mise à jour du contenu Get-Help.
  • Correction d’un problème dans Get-Help où le paramètre Online redirigeait vers une page inexistante avec le code d’erreur 400.

Version 0.3527.3

  • Ajout d’une prise en charge de la gestion d’Exchange pour un autre client à l’aide du flux de délégation.
  • Fonctionne en tandem avec d’autres modules PowerShell dans une seule fenêtre PowerShell.
  • Ajout d’une prise en charge des paramètres de position.
  • Le champ date/heure prend désormais en charge les paramètres régionaux client.
  • Correctif de bogue : PSCredential vide lorsque celui-ci est transmis pendant Connect-ExchangeOnline.
  • Correctif de bogue : erreur de module client lorsque le filtre contient $null.
  • Les sessions créées en interne au module EXO v2 ont désormais des noms (modèle d’affectation de noms : ExchangeOnlineInternalSession_% SomeNumber%).
  • Correctif de bogue : les applets de commande PowerShell distantes échouent par intermittence en raison de la différence entre l’expiration du jeton et l’inactivité de la session.
  • Mise à jour de sécurité majeure.
  • Correctifs et améliorations.