Connexion à Exchange Online PowerShell

Cet article contient des instructions pour se connecter à Exchange Online PowerShell à l’aide du module PowerShell Exchange Online avec ou sans authentification multifacteur (MFA).

Le module PowerShell Exchange Online utilise l’authentification moderne pour la connexion à tous les environnements PowerShell liés à Exchange dans Microsoft 365 : Exchange Online PowerShell, Sécurité & Conformité PowerShell et PowerShell autonome Exchange Online Protection (EOP). Pour plus d’informations sur le module PowerShell Exchange Online, consultez À propos du module PowerShell Exchange Online.

Pour vous connecter à Exchange Online PowerShell à des fins d’automatisation, consultez Authentification d’application uniquement pour les scripts sans assistance et Utiliser des identités managées Azure pour se connecter à Exchange Online PowerShell.

Pour vous connecter à Exchange Online PowerShell à partir de C#, consultez Utiliser C# pour vous connecter à Exchange Online PowerShell.

Ce qu'il faut savoir avant de commencer

Conseil

Vous rencontrez des difficultés ? Renseignez-vous sur le Forum Exchange Online .

Étape 1 : Charger le module PowerShell Exchange Online

Remarque

Si le module est déjà installé, vous pouvez généralement ignorer cette étape et exécuter Connect-ExchangeOnline sans charger manuellement le module au préalable.

Après avoir installé le module, ouvrez une fenêtre PowerShell et chargez-le en exécutant la commande suivante :

Import-Module ExchangeOnlineManagement

Étape 2 : Se connecter et s’authentifier

Remarque

Les commandes de connexion échoueront probablement si le chemin du profil du compte que vous avez utilisé pour vous connecter contient des caractères PowerShell spéciaux (par exemple, $). La solution de contournement consiste à se connecter à l’aide d’un autre compte qui n’a pas de caractères spéciaux dans le chemin d’accès du profil.

La commande à exécuter utilise la syntaxe suivante:

Connect-ExchangeOnline -UserPrincipalName <UPN> [-ExchangeEnvironmentName <Value>] [-ShowBanner:$false] [-DelegatedOrganization <String>] [-SkipLoadingFormatData]

Pour obtenir des informations de syntaxe et de paramètre détaillées, voir Connect-ExchangeOnline.

  • <UPN> est votre compte au format de nom d’utilisateur principal (par exemple, navin@contoso.onmicrosoft.com).

  • Avec le module EXO V3 (v3.0.0 ou version ultérieure) et l’arrêt des connexions d’authentification de base (PowerShell à distance) vers Exchange Online, vous utilisez uniquement des applets de commande d’API REST. Pour plus d’informations, consultez Connexions d’API REST dans le module EXO V3.

  • Lorsque vous utilisez le paramètre ExchangeEnvironmentName, vous n'avez pas besoin d'utiliser les paramètres ConnectionUri ou AzureADAuthorizationEndPointUrl. Les valeurs courantes du paramètre ExchangeEnvironmentName sont décrites dans le tableau suivant :

    Environnement Valeur
    Microsoft 365 ou Microsoft 365 GCC s/o*
    Microsoft 365 GCC High O365USGovGCCHigh
    Microsoft 365 DoD O365USGovDoD
    Office 365 Allemagne O365GermanyCloud
    Office 365 géré par 21Vianet O365China

    * La valeur O365Default requise étant également la valeur par défaut, vous n’avez pas besoin d’utiliser le paramètre ExchangeEnvironmentName dans les environnements Microsoft 365 ou Microsoft 365 GCC.

  • Le paramètre l’Organisation Déléguée indique l’organisation cliente que vous voulez gérer en tant que partenaire Microsoft agréé. Pour plus d’informations, consultez les exemples de connexion plus loin dans cet article.

  • Selon la nature de votre organization, vous pouvez peut-être omettre le paramètre UserPrincipalName dans la commande de connexion. Au lieu de cela, vous entrez le nom d’utilisateur et le mot de passe, ou sélectionnez les informations d’identification stockées après exécution de la commande Connect-ExchangeOnline. Si cela ne fonctionne pas, vous devez utiliser le paramètre UserPrincipalName.

  • Si vous n’utilisez pas MFA, vous devez pouvoir utiliser le paramètre Credential à la place du paramètre UserPrincipalName. Tout d’abord, exécutez la commande $Credential = Get-Credential, entrez votre nom d’utilisateur et votre mot de passe, puis utilisez le nom de la variable pour le paramètre Credential (-Credential $Credential). Si cela ne fonctionne pas, vous devez utiliser le paramètre UserPrincipalName.

  • Utilisez le commutateur SkipLoadingFormatData pour éviter les erreurs lors de la connexion à Exchange Online PowerShell à partir d’un service Windows.

  • L’utilisation du module dans PowerShell 7 nécessite la version 2.0.4 ou ultérieure.

Les exemples de connexion dans les sections suivantes utilisent l’authentification moderne et ne peuvent pas utiliser l’authentification de base.

Se connecter à Exchange Online PowerShell avec une invite de connexion interactive

  1. Les exemples suivants fonctionnent dans Windows PowerShell 5.1 et PowerShell 7 pour les comptes avec ou sans authentification multifacteur :

    • Cet exemple se connecte à Exchange Online PowerShell dans une organisation Microsoft 365 ou Microsoft 365 GCC:

      Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com
      
    • Cet exemple se connecte à Exchange Online PowerShell dans une organisation Microsoft GCC High :

      Connect-ExchangeOnline -UserPrincipalName laura@blueyonderairlines.us -ExchangeEnvironmentName O365USGovGCCHigh
      
    • Cet exemple se connecte à Exchange Online PowerShell dans une organisation Microsoft 365 DoD :

      Connect-ExchangeOnline -UserPrincipalName julia@adatum.mil -ExchangeEnvironmentName O365USGovDoD
      
    • Cet exemple se connecte à Exchange Online PowerShell dans une organisation Office 365 Allemagne :

      Connect-ExchangeOnline -UserPrincipalName lukas@fabrikam.de -ExchangeEnvironmentName O365GermanyCloud
      
  2. Dans la fenêtre de connexion qui s’ouvre, entrez votre mot de passe, puis cliquez sur Se connecter.

    Entrer votre mot de passe dans la fenêtre Connectez-vous à votre compte.

    Remarque

    Dans PowerShell 7, l’authentification unique (SSO) basée sur un navigateur est utilisée par défaut. Par conséquent, l’invite de connexion s’ouvre dans votre navigateur web par défaut au lieu d’une boîte de dialogue autonome.

  3. Authentification MFA uniquement : un code de vérification est généré et fourni en fonction de l’option de réponse configurée pour votre compte (par exemple, un SMS ou l’application Microsoft Authenticator sur votre appareil).

    Dans la fenêtre de vérification qui s’ouvre, entrez le code de vérification, puis cliquez sur Vérifier.

    Entrer votre code de vérification dans la fenêtre Connectez-vous à votre compte.

Méthodes de connexion exclusives PowerShell 7

  • Dans PowerShell 7 pour les comptes sans authentification multifacteur, cet exemple demande des informations d’identification dans la fenêtre PowerShell :

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential
    
  • Dans PowerShell 7 pour les comptes avec ou sans authentification multifacteur, cet exemple utilise un autre ordinateur pour authentifier et terminer la connexion. En règle générale, vous utilisez cette méthode sur les ordinateurs qui n’ont pas de navigateur web (les utilisateurs ne peuvent pas entrer leurs informations d’identification dans PowerShell 7) :

    1. Exécutez la commande suivante sur l’ordinateur sur lequel vous souhaitez vous connecter :

      Connect-ExchangeOnline -Device
      

      La commande de connexion attend la sortie suivante :

      Pour vous connecter, utilisez un navigateur web pour ouvrir la page https://microsoft.com/devicelogin et entrez le code <XXXXXXXXX> pour l’authentification.

      Notez la valeur de <code XXXXXXXXX> .

    2. Sur tout autre appareil disposant d’un navigateur web et d’un accès à Internet, ouvrez https://microsoft.com/devicelogin et entrez la <valeur de code XXXXXXXXX> de l’étape précédente.

    3. Entrez vos informations d’identification dans les pages obtenues.

    4. Dans l’invite de confirmation, cliquez sur Continuer. Le message suivant doit indiquer la réussite et vous pouvez fermer le navigateur ou l’onglet.

    5. La commande de l’étape 1 continue de vous connecter à Exchange Online PowerShell.

Se connecter à Exchange Online PowerShell sans invite de connexion (scripts sans assistance)

Pour obtenir des instructions complètes, consultez Authentification d’application uniquement pour les scripts sans assistance dans Exchange Online PowerShell et Sécurité & Conformité PowerShell.

Se connecter à Exchange Online PowerShell dans les organisations clientes

Pour plus d’informations sur les partenaires et les organisations clientes, consultez les rubriques suivantes :

Cet exemple se connecte aux organisations clientes dans les scénarios suivants :

  • Connectez-vous à un client organization à l’aide d’un compte CSP.

  • Connectez-vous à un organization client à l’aide d’un GDAP.

  • Connectez-vous à un client organization en tant qu’utilisateur invité.

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -DelegatedOrganization adatum.onmicrosoft.com
    

Se connecter à Exchange Online PowerShell à l’aide d’une identité managée

Pour plus d’informations, consultez Utiliser des identités managées Azure pour se connecter à Exchange Online PowerShell.

  • Identité managée affectée par le système :

    Connect-ExchangeOnline -ManagedIdentity -Organization "cohovinyard.onmicrosoft.com"
    
  • Identité managée affectée par l’utilisateur :

    Connect-ExchangeOnline -ManagedIdentity -Organization "constoso.onmicrosoft.com" -ManagedIdentityAccountId <ManagedIdentityAccountIdGuid>
    

Étape 3 : Se déconnecter lorsque vous avez terminé

Veillez à déconnecter la session lorsque vous avez terminé. Si vous fermez la fenêtre PowerShell sans déconnecter la session, vous pouvez utiliser toutes les sessions disponibles et vous devez attendre l’expiration des sessions. Pour déconnecter la session, exécutez la commande suivante :

Disconnect-ExchangeOnline

Pour vous déconnecter en mode silencieux sans invite de confirmation, exécutez la commande suivante :

Disconnect-ExchangeOnline -Confirm:$false

Remarque

La commande disconnect échoue probablement si le chemin d’accès du profil du compte que vous avez utilisé pour vous connecter contient des caractères PowerShell spéciaux (par exemple, $). La solution de contournement consiste à se connecter à l’aide d’un autre compte qui n’a pas de caractères spéciaux dans le chemin d’accès du profil.

Comment savez-vous que vous êtes connecté avec succès ?

Si vous ne recevez aucune erreur, c’est que vous vous êtes connecté correctement. Un test rapide consiste à exécuter une applet de commande PowerShell Exchange Online, par exemple Get-AcceptedDomain, et à voir les résultats.

Si vous recevez des erreurs, vérifiez les conditions requises suivantes :

  • Un mot de passe incorrect est un problème courant. Réexécutez les étapes de connexion et accordez une attention particulière au nom d’utilisateur et au mot de passe que vous utilisez.

  • Le compte auquel vous utilisez pour vous connecter doit être activé pour l’accès à PowerShell. Pour plus d’informations, consultez Activer ou désactiver l’accès à Exchange Online PowerShell.

  • Le trafic du port TCP 80 doit être ouvert entre votre ordinateur local et Microsoft 365. Il est probablement ouvert, mais vous devez y penser si votre organisation a une stratégie restrictive d’accès à Internet.

  • Si votre organisation utilise l’authentification fédérée et que votre fournisseur d’identité (IDP) et/ou le service d’émission de jeton de sécurité (STS) n’est pas disponible publiquement, vous ne pouvez pas utiliser un compte fédéré pour vous connecter à Exchange Online PowerShell. Au lieu de cela, créez et utilisez un compte non fédéré dans Microsoft 365 pour vous connecter à Exchange Online PowerShell.

  • Les connexions REST à Exchange Online PowerShell nécessitent le module PowerShellGet et, par dépendance, le module PackageManagement. Vous recevrez donc des erreurs si vous essayez de vous connecter sans les avoir installés. Par exemple, vous pouvez voir l’erreur suivante :

    Le terme « Update-ModuleManifest » n’est pas reconnu comme le nom d’une applet de commande, d’une fonction, d’un fichier de script ou d’un programme opérable. Vérifiez l’orthographe du nom ou, si un chemin d’accès a été inclus, vérifiez que le chemin est correct, puis réessayez.

    Pour plus d’informations sur les exigences des modules PowerShellGet et PackageManagement, consultez PowerShellGet pour les connexions REST dans Windows.

  • Après vous être connecté, vous pouvez recevoir une erreur qui ressemble à ceci :

    Impossible de charger le fichier ou l’assembly 'System.IdentityModel.Tokens.Jwt,Version=<Version>, Culture=neutral, PublicKeyToken=<TokenValue>'. Impossible de trouver ou de charger un fichier spécifique.

    Cette erreur se produit lorsque le module PowerShell Exchange Online est en conflit avec un autre module importé dans l’instance d’exécution. Essayez de vous connecter dans une nouvelle fenêtre Windows PowerShell avant d’importer d’autres modules.

Annexe : Comparaison des anciennes et nouvelles méthodes de connexion

Cette section tente de comparer les anciennes méthodes de connexion qui ont été remplacées par le module PowerShell Exchange Online. Les procédures d’authentification de base et de jeton OAuth sont incluses à titre de référence historique uniquement et ne sont plus prises en charge.

Se connecter sans authentification multifacteur

  • Exchange Online module PowerShell avec invite d’informations d’identification interactives :

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • Exchange Online module PowerShell sans invite d’informations d’identification interactives :

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    Connect-ExchangeOnline -Credential $o365cred
    
  • Authentification de base :

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/ -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession avec jeton OAuth :

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?BasicAuthToOAuthConversion=true -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Se connecter avec l’authentification multifacteur

  • Exchange Online module PowerShell avec invite d’informations d’identification interactives :

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • Authentification de base : non disponible.

  • New-PSSession avec jeton OAuth : non disponible.

Se connecter à un organization client avec un compte CSP

  • Exchange Online module PowerShell :

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • Authentification de base :

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession avec jeton OAuth :

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/? DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Se connecter à un organization client à l’aide de GDAP

  • Exchange Online module PowerShell :

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • Authentification de base :

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession avec jeton OAuth :

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Se connecter à un organization client en tant qu’utilisateur invité

  • Exchange Online module PowerShell :

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • Authentification de base :

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession avec jeton OAuth :

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Se connecter pour exécuter des scripts sans assistance

  • Exchange Online module PowerShell :

    • Empreinte numérique du certificat :

      Remarque

      Le paramètre CertificateThumbprint est pris en charge uniquement dans Microsoft Windows.

      Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      
    • Objet certificate :

      Connect-ExchangeOnline -Certificate <%X509Certificate2Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      
    • Fichier de certificat :

      Connect-ExchangeOnline -CertificateFilePath "C:\Users\navin\Desktop\automation-cert.pfx" -CertificatePassword (ConvertTo-SecureString -String "<Password>" -AsPlainText -Force) -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      

    Pour plus d’informations, consultez Authentification d’application uniquement pour les scripts sans assistance dans Exchange Online PowerShell et Sécurité & Conformité PowerShell.

  • Authentification de base :

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/ -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession avec jeton OAuth :

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@contoso.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Se connecter à l’aide d’une identité managée

  • Exchange Online module PowerShell :

    • Identité managée affectée par le système :

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"
      
    • Identité managée affectée par l’utilisateur :

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com" -ManagedIdentityAccountId <UserAssignedManagedIdentityPrincipalIdValue>
      

    Pour plus d’informations, consultez Utiliser des identités managées Azure pour se connecter à Exchange Online PowerShell.

  • Authentification de base : non disponible.

  • New-PSSession avec jeton OAuth : non disponible.