Magic Quadrant™ pour la gestion des accès privilégiés 2025 : Netwrix reconnue pour la quatrième année consécutive. Téléchargez le rapport.

Plateforme
Centre de ressourcesBlog
Connectez-vous à Exchange Online PowerShell

Connectez-vous à Exchange Online PowerShell

Mar 31, 2025

Exchange Online PowerShell permet une administration sécurisée et automatisée des environnements de messagerie Microsoft 365. En utilisant le module EXO V2 avec une authentification moderne et MFA, les administrateurs peuvent gérer les boîtes aux lettres, les permissions, les rapports et les migrations à grande échelle. Les options d'identité gérée et basée sur des certificats soutiennent l'automatisation, tandis que les meilleures pratiques telles que RBAC, TLS et la gestion des sessions renforcent la sécurité et la conformité.

Introduction à Exchange Online PowerShell

Exchange Online PowerShell est une interface de gestion en ligne de commande pour administrer et automatiser les tâches dans Exchange Online, qui fait partie de Microsoft 365. Elle permet aux administrateurs de gérer les boîtes aux lettres des utilisateurs, de configurer les paramètres organisationnels et d'effectuer des opérations en masse efficacement grâce au script. Voici quelques avantages de l'utilisation de PowerShell pour la gestion d'Exchange Online :

  • Rédigez des scripts pour automatiser les tâches répétitives, comme la création de boîtes aux lettres et l'attribution des permissions.
  • Gérez en masse des objets, tels que la mise à jour ou la modification de plusieurs comptes utilisateurs, boîtes aux lettres ou groupes en une seule exécution, ainsi que l'exportation et l'importation de données via des fichiers CSV.
  • Connectez-vous à distance à Exchange Online depuis n'importe quel appareil pris en charge et effectuez des tâches administratives de manière sécurisée via des sessions chiffrées.
  • Obtenez des rapports et audits avancés. Par exemple, générez des rapports personnalisés au format CSV, Excel ou HTML, et vous pouvez audit mailbox access et les actions administratives avec des filtres précis.
  • Accès aux paramètres cachés ou avancés qui ne sont pas exposés dans l'interface web EAC.

Guide de référence rapide pour l'audit des boîtes aux lettres Exchange Online

En savoir plus

Prérequis pour se connecter à Exchange Online PowerShell

Pour vous connecter à Exchange Online PowerShell, vous devez répondre à des prérequis spécifiques.

Configuration système requise

  • Système d'exploitation : Windows 10, Windows 11 ou Windows Server 2016/2019/2022
  • Windows PowerShell 5.1 ou version ultérieure
  • .NET Framework 4.7.2 or later

Exigences du réseau

  • Assurez-vous que le trafic sortant HTTPS (TCP 443) est autorisé
  • TLS 1.2 doit être activé
  • Accès à Internet et capacité de se connecter à outlook.office365.com, login.microsoftonline.com, et graph.microsoft.com

Module requis

  • Module de gestion Exchange Online

Exigences d'authentification

  • Pour Microsoft Entra ID, le compte doit disposer des autorisations nécessaires, telles que :
  • Administrateur Global
  • Administrateur Exchange
  • Les comptes avec MFA activé nécessitent le module PowerShell Exchange Online pour l'authentification moderne

Permissions requises

Votre compte devrait avoir les rôles RBAC (Role-Based Access Control) appropriés :

  • Gestion de l'organisation
  • Gestion des destinataires

Comment se connecter à Exchange Online PowerShell

Les différentes méthodes pour se connecter à Exchange Online PowerShell sont :

Connect-ExchangeOnline Module (Méthode Moderne)

Vous pouvez vous connecter à Exchange Online en utilisant le module de gestion Exchange Online (EXO V2). Cette méthode est recommandée pour l'administration et la gestion quotidiennes. Elle prend en charge l'authentification moderne (OAuth) et l'authentification multifacteur (MFA).

Azure Cloud Shell (connexion basée sur le navigateur)

Cette méthode permet aux administrateurs d'utiliser Exchange Online PowerShell directement depuis le Azure Portal sans nécessiter d'installation locale. Exchange Online PowerShell est accessible depuis n'importe quel appareil avec un navigateur, et il dispose de modules et d'outils préinstallés. Cette méthode est recommandée pour les administrateurs qui préfèrent gérer via un navigateur ou qui ont un accès limité aux outils PowerShell localement. Le chemin d'accès est : Azure Portal > Cloud Shell > PowerShell.

Exchange Online Remote PowerShell (Deprecated)

Cette méthode héritée qui utilise Remote PowerShell (protocole WSMan) pour se connecter à Exchange Online PowerShell est obsolète et n'est pas recommandée pour les nouveaux déploiements, mais elle peut être utilisée pour les scripts ou systèmes hérités qui ne prennent pas en charge le nouveau module de gestion Exchange Online. Cette méthode ne prend pas en charge l'authentification multifacteur.

Utilisation du Service Principal (Authentification basée sur certificat)

Cette méthode permet une administration non surveillée ou basée sur des scripts via des comptes de Service Principal et une authentification basée sur des certificats. Elle est recommandée pour l'automatisation, les CI/CD Pipelines et les processus en arrière-plan. Comme prérequis, elle nécessite : Azure AD l'enregistrement d'application et la configuration de certificat.

Comparaison des méthodes de connexion

Méthode

Idéal pour

Prend en charge l'authentification multifacteur

Prend en charge l'automatisation

Connect-ExchangeOnline (EXO V2 Module)

Tâches administratives quotidiennes

Oui

Oui

Azure Cloud Shell

Accès rapide au navigateur

Oui

Non

Remote PowerShell (WSMan)

Legacy scripts

Non

Oui

Service Principal (Authentification par Certificat)

Automatisation, CI/CD

Non

Oui

Comprendre l'authentification moderne et ses avantages

L'authentification moderne est une méthode de Identity Management qui utilise OAuth 2.0 et la bibliothèque d'authentification Active Directory (ADAL) ou la bibliothèque d'authentification Microsoft (MSAL) pour des connexions sécurisées. Elle remplace les méthodes d'authentification traditionnelles telles que l'authentification de base.

L'authentification moderne est la méthode recommandée et sécurisée pour se connecter à Exchange Online PowerShell car elle offre les avantages suivants :

  • Améliore la sécurité car il utilise OAuth 2.0 pour l'authentification basée sur des jetons au lieu de transmettre directement les identifiants.
  • Permet l'utilisation de MFA, ajoutant une couche supplémentaire de sécurité.
  • Permet aux administrateurs d'appliquer des politiques basées sur la conformité des appareils, l'emplacement ou le niveau de risque, ce qui aide à limiter l'accès aux ressources Exchange Online en fonction des conditions définies.
  • Intégration transparente avec Microsoft Entra ID et des fournisseurs d'identité tiers, avec prise en charge de la connexion unique (SSO).

Microsoft supprime l'authentification de base, donc la migration vers une authentification moderne est critique.

Exigences pour se connecter à Exchange Online PowerShell avec ou sans MFA

Voici les exigences pour se connecter à Exchange Online PowerShell avec ou sans MFA.

Sans MFA (Authentification de base – Méthode héritée obsolète)

Le compte Microsoft Entra ID ne doit pas avoir MFA activéL'authentification de base doit toujours être autorisée (si elle n'est pas bloquée à l'échelle de l'organisation)

Avec MFA (Authentification moderne)

Le compte Microsoft Entra ID doit avoir MFA configuréOAuth 2.0 doit être pris en charge (par défaut dans Exchange Online)

Guide étape par étape pour se connecter

Voici les étapes succinctes pour se connecter à Exchange Online PowerShell :

  1. Installez le module PowerShell pour Exchange Online.
  2. Connectez-vous à Exchange Online en utilisant la cmdlet Connect-ExchangeOnline. Fournissez vos identifiants d'administrateur Exchange de Microsoft 365 lorsque cela vous est demandé.
  3. Une fois connecté à l'environnement Exchange Online, vous pouvez utiliser les cmdlets disponibles dans le module PowerShell Exchange Online pour gérer les paramètres et objets Exchange Online tels que les boîtes aux lettres, les contacts et les calendriers.

Installez le module de gestion Exchange Online

Le module Exchange Online Management peut être installé sur des systèmes Windows, Mac et Linux. Ouvrez PowerShell en tant qu'administrateur et exécutez la commande suivante pour installer le dernier module Exchange Online Management :

Install-Module -Name ExchangeOnlineManagement -Force

Exécutez le cmdlet suivant pour vérifier que le module Exchange Online Management est installé :

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Si installé correctement, cela devrait afficher les détails du module.

Le module PowerShell Exchange Online utilise une authentification moderne pour se connecter à tous les environnements PowerShell liés à Exchange.

Mettez à jour le module

Pour mettre à jour le module de gestion Exchange Online existant, utilisez le cmdlet suivant :

Update-Module ExchangeOnlineManagement

Importez le module

Chargez le module dans votre session PowerShell en utilisant le cmdlet suivant :

Import-Module ExchangeOnlineManagement

Définir la politique d'exécution

Lors de la connexion à Exchange Online PowerShell, la politique d'exécution définie pour PowerShell détermine comment les scripts sont exécutés sur votre système. RemoteSigned est la politique recommandée car elle garantit que :

  • Les scripts créés localement peuvent s'exécuter sans nécessiter de signature numérique
  • Les scripts téléchargés depuis internet doivent être signés par un éditeur de confiance

Utilisez le cmdlet suivant pour définir la politique d'exécution sur RemoteSigned :

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Connectez-vous en utilisant l'authentification de base (Obsolète)

Microsoft a définitivement désactivé l'authentification de base pour Exchange Online en octobre 2022. Elle a été remplacée par une authentification moderne (OAuth 2.0).

Connectez-vous en utilisant l'authentification moderne

L'authentification moderne (OAuth 2.0) est la méthode recommandée et sécurisée pour se connecter à Exchange Online PowerShell. Les différentes méthodes de connexion sont :

Méthode


Authentification interactive (invite GUI)

Ceci est la méthode de connexion par défaut pour la plupart des locataires, tels que les locataires commerciaux standard de Microsoft 365. Utilisez cette applet de commande pour vous connecter en utilisant l'authentification moderne : Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com Remplacez admin@yourdomain.com par votre compte administrateur Exchange Online. Une fenêtre de connexion apparaîtra ; terminez le processus de connexion, y compris l'authentification à plusieurs facteurs (MFA) si nécessaire.

Authentification par code d'appareil (pour les environnements sans interface graphique)

Si vous travaillez dans un environnement non graphique, utilisez le paramètre -Device : Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -Device Copiez le Code de l'appareil fourni.Ouvrez https://microsoft.com/devicelogin dans un navigateur.Entrez le Code de l'appareil.Authentifiez-vous avec votre compte et complétez l'authentification multifacteur (si nécessaire).

Connectez-vous avec l'authentification basée sur des certificats (non interactive)

Pour l'automatisation ou les scripts sans surveillance : Connect-ExchangeOnline -CertificateThumbprint “<CertificateThumbprint>” -AppId “<AppId>” -Organization “<YourTenant>” Remplacez : “<CertificateThumbprint>” par l'empreinte de votre certificat, “<AppId>” par l'ID de l'application Microsoft Entra, “<YourTenant>” par votre domaine (tel que yourdomain.onmicrosoft.com).

Exemples de connexion pour différents environnements Exchange Online (GCC, GCC High, DoD)

Différents environnements Exchange Online nécessitent des URI de connexion spécifiques et des configurations lors de l'utilisation de l'authentification moderne. Voici des exemples pour ces environnements :

Méthode

Informations de connexion

Microsoft 365 GCC (Government Community Cloud)

Cas d'utilisation : Clients du gouvernement américain (GCC) Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com Remplacez admin@contoso.onmicrosoft.com par votre compte administrateur Exchange Online. Une fenêtre de connexion apparaîtra ; terminez le processus de connexion, y compris l'authentification à plusieurs facteurs (MFA), si nécessaire.

Microsoft 365 GCC High

Cas d'utilisation : clients du gouvernement américain avec des exigences de sécurité élevées Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -ExchangeEnvironmentName O365USGovGCCHigh -ExchangeEnvironmentName – Spécifie explicitement l'environnement GCC High

Microsoft 365 DoD (Department of Defense)

Cas d'utilisation : Réservé aux locataires du Département de la Défense des États-Unis (DoD) Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -ExchangeEnvironmentName O365USGovDoD -ExchangeEnvironmentName : Définit explicitement l'environnement sur l'environnement Office 365 US Government DoD

Utilisation de l'authentification multi-facteurs

Processus de connexion étape par étape avec MFA activé

Connexion avec les identités gérées

L'utilisation des identités gérées pour se connecter à Exchange Online PowerShell permet une authentification sécurisée et sans mot de passe dans Microsoft Entra.

Qu'est-ce que les identités gérées ?

Les identités gérées permettent aux ressources Microsoft Entra de s'authentifier auprès des services pris en charge sans stocker les informations d'identification dans des scripts ou du code. Exchange Online prend en charge cette fonctionnalité pour les scripts non surveillés utilisant Azure Automation ou des scénarios similaires.

Identités gérées attribuées par le système vs. attribuées par l'utilisateur

Fonctionnalité

Attribué par le système

Attribué par l'utilisateur

Lié à une ressource

Associé à une seule ressource Microsoft Entra (telle qu'une VM, Logic App). Il est supprimé lorsque la ressource est supprimée.

Peut être partagé à travers de multiples ressources

Portée de la gestion

Géré automatiquement pour sa ressource

Géré de manière indépendante et réutilisable

Cas d'utilisation

Adapté aux scénarios à ressource unique

Idéal pour une utilisation partagée ou multi-ressources

Se connecter à Exchange Online PowerShell à l'aide d'identités gérées

Prérequis

  • Assurez-vous que votre ressource Azure (par exemple, VM, Function App, App Service) dispose d'une identité gérée attribuée par le système ou par l'utilisateur activée.
  • Attribuez à l'identité gérée le rôle Microsoft Entra ID nécessaire pour Exchange Online. Par exemple :
  • Administrateur Exchange
  • Lecteur Global ou Administrateur Global (si des permissions plus étendues sont nécessaires).
  • Installez et importez le module PowerShell Exchange Online.

Comment se connecter

Utilisez Connect-ExchangeOnline avec le paramètre -ManagedIdentity.

  • Exemple pour une identité gérée attribuée par le système :

Connect-ExchangeOnline -ManagedIdentity -Organization <YourDomain>.onmicrosoft.com

  • Exemple pour une identité gérée attribuée à un utilisateur :
      # Specify the Client ID of the User-Assigned Managed Identity

Connect-ExchangeOnline -ManagedIdentity -Organization <YourDomain>.onmicrosoft.com -ManagedIdentityAccountId <UserAssignedManagedIdentityClientIdValue>
      

Pour des scénarios sans surveillance, tels que les tâches d'automatisation ou les pipelines CI/CD :

  • Stockez le script dans un emplacement sécurisé, tel que Azure Automation, Azure DevOps ou une VM avec Managed Identity activé.
  • Utilisez les Managed Identities pour vous authentifier, ce qui évite de devoir gérer explicitement les identifiants.

Exemple de script :

      # Connect to Exchange Online

Connect-ExchangeOnline -ManagedIdentity

# Example Exchange Online commands

Get-Mailbox -RecipientTypeDetails UserMailbox | Select-Object DisplayName, PrimarySmtpAddress

# Disconnect the session

Disconnect-ExchangeOnline -Confirm:$false
      

Consultez l'article Use Azure managed identities to connect to Exchange Online PowerShell de Microsoft pour plus d'informations.

Windows PowerShell Scripting Tutorial (PDF) for Beginners

Learn more

Syntaxe et paramètres de connexion communs

Syntaxe

La cmdlet Connect-ExchangeOnline a la syntaxe suivante :

Connect-ExchangeOnline

[[-ConnectionUri] <String>]

[[-AzureADAuthorizationEndpointUri] <String>]

[[-ExchangeEnvironmentName] <ExchangeEnvironment>]

[[-PSSessionOption] <PSSessionOption>]

[[-DelegatedOrganization] <String>]

[[-Prefix] <String>]

[[-CommandName] <String[]>]

[[-FormatTypeName] <String[]>]

[-AccessToken <String>]

[-AppId <String>]

[-BypassMailboxAnchoring]

[-Certificat <X509Certificate2>]

[-CertificateFilePath <String>]

[-CertificatePassword <SecureString>]

[-CertificateThumbprint <String>]

[-Credential <PSCredential>]

[-Device]

[-EnableErrorReporting]

[-InlineCredential]

[-LoadCmdletHelp]

[-LogDirectoryPath <String>]

[-LogLevel <LogLevel>]

[-ManagedIdentity]

[-ManagedIdentityAccountId <String>]

[-Organization <String>]

[-PageSize <UInt32>]

[-ShowBanner]

[-ShowProgress <Boolean>]

[-SigningCertificate <X509Certificate2>]

[-SkipLoadingCmdletHelp]

[-SkipLoadingFormatData]

[-TrackPerformance <Boolean>]

[-UseMultithreading <Boolean>]

[-UserPrincipalName <String>]

[-UseRPSSession]

[<CommonParameters>]

Paramètres communs

Certains paramètres de base sont :

Paramètre

Description

-UserPrincipalName

Spécifie le compte que vous souhaitez utiliser pour vous connecter à Exchange Online PowerShell. Ce paramètre vous permet d'éviter de saisir un nom d'utilisateur dans l'invite d'authentification moderne.

-Credential

Spécifie le nom d'utilisateur et le mot de passe utilisés pour se connecter à Exchange Online PowerShell

-DelegatedOrganization

Indique l'organisation cliente que vous souhaitez gérer en tant qu'administrateur délégué

-ConnectionUri

Spécifie le point de terminaison de connexion Exchange Online (utilisé dans des environnements spécialisés comme les locataires GCC ou chinois)

-CertificateThumbprint

Se connecte en utilisant un certificat au lieu d'un nom d'utilisateur/mot de passe. Une valeur valide est l'empreinte du certificat.

-AppId

Utilisé avec -CertificateThumbprint pour spécifier un ID d'application Microsoft Entra

-AccessToken

Spécifie un jeton d'accès OAuth 2.0 pour l'authentification

-Organisation

Spécifie l'organisation lorsque vous vous connectez en utilisant CBA ou une identité gérée

Certains paramètres optionnels sont :

Paramètre

Description

-ShowProgress

Indique s'il faut afficher ou masquer la barre de progression des cmdlets importées lors de la connexion. Les valeurs valides sont $true et $false.

-SkipLoadingFormatData

Accélère les connexions en évitant le chargement des fichiers de formatage et de type de données

-InlineCredential

Transmet directement les identifiants dans la ligne de commande pour éviter les invites lors de la connexion à Exchange Online PowerShell

-LogDirectoryPath

Spécifie l'emplacement du fichier journal

-LogLevel

Spécifie le niveau de journalisation. Les valeurs valides sont Default et All.

-ConnectionTimeout

Spécifie la valeur du délai d'expiration (en secondes) pour la tentative de connexion

-Appareil

Généralement utilisé sur des ordinateurs sans navigateurs web. Il n'est pas nécessaire de spécifier une valeur avec ce commutateur.

-ManagedIdentity

Indique que vous utilisez une identité gérée pour vous connecter. Vous n'avez pas besoin de spécifier une valeur avec ce commutateur.

Paramètres spécifiques pour les connexions dans des environnements à haute sécurité :

Pour les environnements GCC

Paramètre

Description

-ConnectionUri

Spécifie le point de terminaison pour les locataires GCC

-EntraIDAuthorizationEndpointUri

Spécifie le point de terminaison d'autorisation pour GCC

-ExchangeEnvironmentName

Spécifie explicitement l'environnement GCC High

Pour les environnements du DoD

Paramètre

Description

-ConnectionUri

Points vers le point de terminaison spécifique au DoD

-ExchangeEnvironmentName

Définit explicitement l'environnement sur DoD

Automatisation des connexions

Authentification App-Only pour scripts non surveillés

L'authentification basée sur des certificats (CBA) ou l'authentification uniquement par application prend en charge les scénarios de scripts et d'automatisation non surveillés en utilisant des applications Microsoft Entra et des certificats auto-signés.

L'authentification uniquement par application permet aux services, scripts ou tâches en arrière-plan d'accéder de manière sécurisée aux API et ressources sans nécessiter d'interaction utilisateur. Cela est idéal pour des scénarios d'automatisation tels que les tâches planifiées, la synchronisation de données ou le traitement en backend.

Étapes pour configurer l'authentification App-Only

  1. Allez à votre fournisseur d'identité, tel que Microsoft Entra ID, et enregistrez l'application. Ensuite, notez le Client ID, le Tenant ID et générez un Client Secret ou téléchargez un certificat.
  2. Attribuez les permissions API nécessaires. Vous devriez accorder des permissions API d'Application plutôt que des permissions API Déléguées.
  3. Créez et configurez un certificat X.509 auto-signé. Ceci est utilisé pour authentifier votre application auprès de Microsoft Entra ID, lors de la demande du jeton d'accès uniquement pour l'application.
  4. Enregistrez le certificat avec votre application. Cela vous permettra d'utiliser la clé privée (fichier .pfx) ou l'empreinte digitale pour l'authentification.
  5. Pour attribuer les rôles RBAC appropriés à l'application, utilisez l'un des rôles intégrés pris en charge dans Microsoft Entra.

Maintenant, vous pouvez vous connecter à Exchange Online PowerShell en utilisant les cmdlets fournies dans la section Connect Using Modern Authentication.

Consultez l'article de Microsoft sur l'authentification App-only pour les scripts non surveillés dans Exchange Online PowerShell et Security & Compliance PowerShell pour plus d'informations.

Exemple de script PowerShell pour l'authentification non surveillée

      $TenantId = “your-tenant-id”

$ClientId = “your-client-id”

$ClientSecret = “your-client-secret”

$Resource = “https://graph.microsoft.com/”

# Get token

$Body = @{

grant_type = “client_credentials”

client_id = $ClientId

client_secret = $ClientSecret

scope = “$Resource/.default”

}

$TokenResponse = Invoke-RestMethod -Uri “https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token” -Method Post -Body $Body

$AccessToken = $TokenResponse.access_token

Write-Output “Access Token: $AccessToken”
      

Connexion avec des certificats

L'utilisation de certificats pour l'automatisation offre une couche supplémentaire de sécurité par rapport aux secrets clients. Les certificats sont idéaux pour l'authentification uniquement par application dans les scripts ou les travaux en arrière-plan, car ils évitent de stocker des secrets sensibles en texte clair.

Guide étape par étape pour l'utilisation des certificats pour l'automatisation

  1. Générez un certificat auto-signé. Vous pouvez utiliser des outils tels que PowerShell, OpenSSL ou tout autre outil de gestion de certificats pour le générer.
  • Voici comment vous pouvez le générer en utilisant PowerShell:
      # Generate a self-signed certificate

$cert = New-SelfSignedCertificate -DnsName “yourapp.domain.com” -CertStoreLocation “Cert:\CurrentUser\My” -KeyExportPolicy Exportable

# Export the certificate and private key as a PFX file

$certPath = “C:\path\to\certificate.pfx”

$certPassword = ConvertTo-SecureString -String “yourpassword” -Force -AsPlainText

Export-PfxCertificate -Cert $cert -FilePath $certPath -Password $certPassword
      
  • Enregistrez l'application auprès de votre fournisseur d'identité, tel que Microsoft Entra ID. Vous devez également télécharger la clé publique du certificat. Pour cela :
  • Allez à la section d'enregistrement de l'application.
  • Ajoutez une clé d'identification en utilisant le fichier .crt (clé publique).
  • Notez l'App ID et le Tenant ID.
  • L'application utilisera la clé privée pour signer un JWT pour l'authentification exclusive de l'application.

Meilleures pratiques de sécurité pour les connexions basées sur des certificats

  • Stockez les certificats dans un emplacement sécurisé, tel que Azure Key Vault. Évitez de coder en dur les chemins ou les clés dans les scripts.
  • Utilisez des certificats avec une courte période de validité. Renouvelez les certificats avant leur expiration.
  • Révoquez immédiatement les certificats compromis ou inutilisés.
  • Limitez l'accès à l'application et à ses ressources en utilisant le principle of least privilege, et définissez des portées d'API précises.
  • Enregistrez l'utilisation des certificats à des fins d'audit.
  • Surveillez l'authentification des applications pour détecter les accès non autorisés.
  • Utilisez le chiffrement pour sécuriser les fichiers de clé privée, tels que .pfx.
  • Protégez les clés privées avec des mots de passe forts.
  • Exigez l'authentification multifacteur pour la gestion des configurations d'applications. Cela peut nécessiter l'application de l'authentification multifacteur pour les administrateurs.

Gestion des sessions et déconnexion

Gérer et terminer correctement les sessions PowerShell d'Exchange Online est crucial pour maintenir la sécurité, optimiser l'utilisation des ressources et prévenir l'épuisement des sessions. Voici quelques bonnes pratiques que vous devriez suivre.

Meilleures pratiques pour gérer les sessions PowerShell d'Exchange Online

  • Utilisez le module de gestion Exchange Online (EXO V2) pour une authentification moderne et une meilleure sécurité.
  • Connectez-vous avec un compte qui dispose uniquement des autorisations nécessaires pour vos tâches, telles que des rôles comme Exchange Admin et Security Admin.
  • Exchange Online a une limite maximale de sessions (3 sessions simultanées par utilisateur). Assurez-vous de fermer les sessions après avoir terminé les tâches pour éviter d'atteindre cette limite.
  • Soyez conscient du délai d'expiration par défaut pour les sessions Exchange Online (généralement 15 minutes d'inactivité). Si les déconnexions automatiques sont fréquentes, optimisez les scripts pour plus d'efficacité.
  • Exécutez les scripts dans une seule session si possible. Évitez de laisser les sessions inactives pendant de longues périodes.

Meilleures pratiques pour terminer les sessions PowerShell d'Exchange Online

  • Déconnectez toujours votre session une fois terminée. Fermer simplement la fenêtre PowerShell sans se déconnecter peut laisser des sessions orphelines. Déconnectez-vous toujours explicitement.
  • La cmdlet Remove-PSSession ne nettoie pas complètement les sessions Exchange Online. Préférez toujours :

Disconnect-ExchangeOnline -Confirm:$false

  • Si vous soupçonnez que des sessions orphelines consomment des ressources, terminez-les en utilisant :

Get-PSSession | Remove-PSSession

  • Si une session expire, reconnectez-vous explicitement au lieu de supposer que la session est toujours valide.

Activer ou désactiver l'accès à Exchange Online PowerShell pour un utilisateur

Vous devez disposer de privilèges administratifs suffisants, tels que le rôle d'Administrateur Global ou d'Administrateur Exchange, pour activer ou désactiver l'accès des utilisateurs à Exchange Online PowerShell. De plus, l'appartenance aux groupes de rôles de Gestion de l'Organisation ou de Gestion des Destinataires est également requise.

Désactiver l'accès à PowerShell affecte uniquement la capacité de l'utilisateur à se connecter à Exchange Online PowerShell. Cela n'affecte pas leur accès à d'autres services tels que le Centre d'administration Microsoft 365.

Désactiver l'accès pour un utilisateur

Lorsque vous désactivez l'accès à PowerShell, l'utilisateur ne pourra pas se connecter à Exchange Online PowerShell avec ses identifiants. Voici la cmdlet pour désactiver l'accès :

Set-User -Identity <UserPrincipalName> -EXOModuleEnabled $false

Activez l'accès pour un utilisateur

Lorsque vous activez l'accès PowerShell, l'utilisateur peut se connecter à Exchange Online PowerShell. Voici la cmdlet pour activer l'accès :

Set-User -Identity <UserPrincipalName> -EXOModuleEnabled $true

Vérifiez le statut d'accès PowerShell d'un utilisateur

Pour vérifier si un utilisateur a l'accès PowerShell activé ou désactivé, utilisez la commande suivante :

Get-User -Identity “<UserPrincipalName>” | Format-List EXOModuleEnabled

Pour obtenir tous les utilisateurs qui n'ont pas accès à Exchange Online PowerShell, utilisez la cmdlet suivante :

Get-User -ResultSize unlimited -Filter ‘RemotePowerShellEnabled -eq $false’

Pour obtenir tous les utilisateurs qui ont accès à Exchange Online PowerShell, utilisez la cmdlet suivante :

Get-User -ResultSize unlimited -Filter ‘RemotePowerShellEnabled -eq $true’

Déconnectez-vous d'Exchange Online

Si vous utilisez Exchange Online PowerShell V2 (EXO V2) :

Si vous vous êtes connecté avec la cmdlet Connect-ExchangeOnline, vous pouvez vous déconnecter en utilisant la commande suivante :

Disconnect-ExchangeOnline -Confirm:$false

Le paramètre -Confirm est facultatif et sert à supprimer les invites de confirmation. Par défaut, certaines cmdlets peuvent demander une confirmation avant de procéder à une action (comme la déconnexion d'une session).

$false indique que vous ne souhaitez pas être invité à confirmer. Cela permet à la commande de s'exécuter automatiquement sans vous demander si vous êtes sûr de vouloir vous déconnecter.

Si vous utilisez l'ancien module PowerShell de Exchange Online :

Si vous utilisiez l'ancienne session PowerShell à distance (par exemple, en vous connectant avec New-PSSession), vous pouvez vous déconnecter en supprimant la session comme suit :

Remove-PSSession $Session

Dans ce cas, $Session est la variable où vous avez stocké votre objet de session PowerShell lorsque vous vous êtes connecté pour la première fois.

Problèmes de connexion courants et dépannage

Lorsque vous travaillez avec Exchange Online PowerShell, vous pourriez rencontrer des problèmes de connexion. Examinons ces problèmes et leurs solutions.

Module non installé ou obsolète

Vous voyez des erreurs telles que :

  • Le terme 'Connect-ExchangeOnline' n'est pas reconnu.
  • Le module ‘ExchangeOnlineManagement’ n'est pas installé.

Solution :

Le module de gestion Exchange Online (EXO V2) doit être installé et mis à jour. Utilisez cette cmdlet pour vérifier que le module est correctement installé :

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Identifiants incorrects ou problèmes d'authentification

Vous pourriez rencontrer des problèmes tels que :

  • Il y a une erreur d'authentification
  • Les invites MFA échouent

Solution :

  • Utilisez une authentification moderne avec les identifiants appropriés.
  • Assurez-vous que votre compte prend en charge MFA et que vous n'êtes pas bloqué.
  • Effacez toutes les informations d'identification mises en cache.
  • Si votre compte dispose de politiques d'accès conditionnel, vérifiez qu'elles autorisent l'accès à Exchange Online.

Épuisement de la limite de session

Trop de sessions ouvertes vous empêchent de vous connecter, et vous pourriez recevoir une erreur :

  • Nombre maximal de sessions simultanées dépassé.

Solution :

  • Déconnectez les sessions inactives.
  • Assurez-vous de vous déconnecter correctement après chaque session.
  • Surveillez les sessions actives.

Proxy ou pare-feu bloquant la connexion

La connexion est suspendue ou échoue en raison d'une restriction de proxy ou de pare-feu, et vous recevez cette erreur :

  • Impossible de se connecter au serveur distant.

Solution :

  • Assurez-vous que vos paramètres de proxy sont correctement configurés :
  • Autorisez les points de terminaison PowerShell de Exchange Online à travers le pare-feu :
  • *.outlook.office365.com
  • *.office365.com
  • *.microsoftonline.com
  • Testez la connectivité avec :

Test-NetConnection outlook.office365.com -Port 443

Version TLS obsolète

Vous pourriez rencontrer cette erreur :

  • La connexion sous-jacente a été fermée : Une erreur inattendue s'est produite lors de l'envoi.

Solution :

  • Assurez-vous que votre système prend en charge TLS 1.2.
  • Vérifiez votre version de .NET (la version 4.6.2 ou ultérieure est recommandée).

Permissions manquantes

Vous obtenez des erreurs telles que :

  • Accès refusé. Vous n'avez pas les permissions suffisantes.

Solution :

  • Votre compte doit avoir le rôle d'Exchange Administrator ou le rôle approprié assigné.

Version incorrecte de PowerShell

Vous pourriez rencontrer des erreurs de compatibilité si vous utilisez une version de PowerShell non prise en charge.

Solution :

  • Assurez-vous d'utiliser PowerShell 5.1 ou une version supérieure :
  • Pour PowerShell Core (7.x), assurez-vous que le module EXO V2 est compatible.

Verrouillage de compte ou compte désactivé

Vous obtenez des erreurs telles que :

  • Votre compte a été verrouillé ou désactivé.

Solution :

  • Vérifiez le statut du compte dans Microsoft 365 Admin Center.
  • Déverrouillez le compte ou réinitialisez le mot de passe si nécessaire.

Problèmes de résolution DNS

Vous obtenez l'erreur suivante :

  • Le nom distant n'a pas pu être résolu.

Solution :

  • Vérifiez la résolution DNS pour les points de terminaison Exchange Online.
  • Utilisez des serveurs DNS publics (par exemple, 8.8.8.8 ou 1.1.1.1) si la résolution DNS échoue.

Erreurs liées aux conflits de modules PowerShell

Les conflits de modules dans PowerShell peuvent provoquer diverses erreurs, telles que des cmdlets non reconnues, des fonctionnalités qui se chevauchent ou des incompatibilités de versions.

Vous pourriez obtenir des erreurs telles que :

  • Le terme ‘<cmdlet>’ n'est pas reconnu.
  • Le cmdlet est disponible dans plusieurs modules.
  • Référence de cmdlet ambiguë.

Solution :

  • Vérifiez tous les modules actuellement chargés et leurs versions en utilisant cette cmdlet :

Get-Module -ListAvailable

  • Si un cmdlet provoque un conflit, trouvez à quel module appartient le cmdlet :

Get-Command <Cmdlet-Name>

  • Importez explicitement le module requis et forcez la version correcte du module :

Import-Module -Name ExchangeOnlineManagement -RequiredVersion 2.x.x -Force

  • Si un module obsolète ou en conflit est chargé, retirez-le en utilisant :

Remove-Module -Name <Module-Name>

  • Si plusieurs versions d'un module sont installées, désinstallez les versions antérieures en utilisant :

Uninstall-Module -Name ExchangeOnlineManagement -RequiredVersion 1.x.x

Erreurs de connexion REST API

Pour gérer les erreurs de connexion à l'API REST dans PowerShell, vous devez diagnostiquer et résoudre les problèmes liés à l'authentification, la connectivité réseau ou les requêtes mal configurées.

Problème

Solution

Problèmes d'authentification Erreur : Échecs d'authentification ou identifiants invalides.

Assurez-vous d'utiliser les identifiants corrects et l'authentification moderne (OAuth). Vérifiez que votre compte dispose des autorisations suffisantes (par exemple, Administrateur Exchange ou un rôle similaire). Utilisez le modèle d'application sécurisée ou l'authentification basée sur des certificats si vous y accédez de manière programmatique.

Problèmes d'Endpoint ou de module Erreur : Impossible de se connecter à l'Endpoint requis.

Vérifiez que vous utilisez le bon module PowerShell V2 pour Exchange Online (ExchangeOnlineManagement). Mettez à jour le module vers la dernière version : Vérifiez la connectivité à l'endpoint REST d'Exchange Online en utilisant le cmdlet suivant. Il devrait se résoudre et être accessible :
https://outlook.office365.com/powershell-liveid

Connectivité réseau Erreur : Délais d'attente ou erreurs de connexion refusée.

Les points de terminaison requis ne doivent pas être bloqués par des pare-feu ou des proxy. Ceux-ci incluent : *.office365.com *.microsoftonline.com Testez la connectivité internetSi vous êtes derrière un proxy d'entreprise, assurez-vous que le proxy est configuré correctement pour PowerShell.

Expiration du jeton Erreur : Expiration du jeton d'authentification pendant la session.

Utilisez Connect-ExchangeOnline avec une session persistante, comme indiqué ci-dessous : Connect-ExchangeOnline -UserPrincipalName <votre-email-admin> -ShowProgress $true Rafraîchissez votre session si le jeton expire en utilisant le cmdlet suivant : Disconnect-ExchangeOnline Connect-ExchangeOnline

Problèmes de protocole TLS/SSL Erreur : erreurs TLS pendant la connexion.

Assurez-vous que TLS 1.2 est activé

Pannes de service Erreur : Service indisponible ou connectivité intermittente.

Vérifiez le Microsoft 365 Service Health Dashboard pour tout problème en cours.

Erreurs HTTP Ces erreurs se produisent lorsque le serveur renvoie un code d'état HTTP indiquant un échec. Codes communs : 400 Bad Request : La requête est malformée (par exemple, JSON invalide ou paramètres)401 Unauthorized : Identifiants d'authentification invalides ou manquants403 Forbidden : L'accès est refusé même si l'authentification est correcte404 Not Found : Le point de terminaison ou la ressource demandée n'existe pas500 Internal Server Error : Un problème sur le serveur API

Assurez-vous que le contenu et les en-têtes correspondent aux exigences de la documentation de l'API. Vérifiez les clés API, les jetons ou autres identifiants. Assurez-vous que votre compte dispose des droits d'accès à la ressource demandée. Utilisez des journaux ou un outil comme Postman pour vérifier les données brutes de la requête/réponse.

Erreurs SSL/TLS Les connexions sécurisées (HTTPS) peuvent échouer en raison de problèmes de certificat.

Assurez-vous que le certificat SSL du serveur est valide et fiable. Pour les tests locaux, vous pouvez contourner la validation SSL, mais évitez cela en production. Assurez-vous que vos bibliothèques clientes (par exemple, Python requests, Node.js https) sont à jour pour prendre en charge les versions modernes de TLS.

Erreurs de délai d'attente Celles-ci surviennent lorsque le serveur API ne répond pas dans le délai prévu.

Ajustez le paramètre de délai d'attente dans votre client API pour augmenter les paramètres de timeout. Évitez d'envoyer des charges utiles excessivement volumineuses ou des requêtes lentes. Contactez le fournisseur d'API si les délais d'attente sont fréquents car il peut y avoir des problèmes de charge du serveur.

Limitation du débit et quotas Les API ont souvent des limites d'utilisation, ce qui peut entraîner des erreurs lorsqu'elles sont dépassées. Erreur : HTTP 429 Trop de requêtes

Vérifiez les limites de taux. Consultez la documentation de l'API pour les limites de requêtes. Mettez en œuvre le Throttling pour espacer les requêtes afin de respecter les limites de taux. Contactez le fournisseur de l'API pour demander des quotas plus élevés.

Cmdlets PowerShell clés pour Exchange Online

Pour obtenir une liste de toutes les cmdlets PowerShell Exchange Online disponibles, utilisez la cmdlet suivante :

Get-command -Module ExchangeOnlineManagement

Voici un aperçu rapide des cmdlets Exchange Online clés, y compris Get-Mailbox, Get-EXOMailboxStatistics, et d'autres, pour gérer efficacement les boîtes aux lettres, les utilisateurs et leurs configurations.

Get-Mailbox

Cette cmdlet récupère des informations sur les boîtes aux lettres dans Exchange Online. Vous pouvez également afficher des boîtes aux lettres spécifiques, telles que les boîtes aux lettres d'utilisateurs, les boîtes aux lettres partagées, etc.

Syntaxe

Get-Mailbox [-Identity] <String> [-RecipientTypeDetails <RecipientTypeDetails>] [autres paramètres]

Exemples d'utilisation courante

  • Obtenez toutes les boîtes aux lettres :

Get-Mailbox -ResultSize Unlimited

  • Obtenez toutes les boîtes aux lettres partagées :

Get-Mailbox -RecipientTypeDetails SharedMailbox

  • Filtrer les boîtes aux lettres par domaine :

Get-Mailbox -Filter “EmailAddress -like ‘*@domain.com'”

Get-EXOMailboxStatistics

Cette cmdlet récupère des statistiques détaillées sur les boîtes aux lettres dans Exchange Online, fournissant des informations telles que la taille de la boîte aux lettres, le nombre d'éléments et la dernière heure de connexion.

Syntaxe

Get-EXOMailboxStatistics [-Identity] <String>

Exemples d'utilisation courante

  • Obtenez les statistiques de boîte aux lettres pour un utilisateur :

Get-EXOMailboxStatistics -Identity user@domain.com

  • Récupérez la taille de toutes les boîtes aux lettres :

Get-EXOMailboxStatistics | Select DisplayName, ItemCount, TotalItemSize

  • Obtenez des boîtes aux lettres avec des tailles dépassant un seuil spécifique :

Get-EXOMailboxStatistics | Where-Object { $_.TotalItemSize -gt 10GB }

Get-MailboxStatistics

Cette cmdlet est similaire à Get-EXOMailboxStatistics mais fonctionne avec des environnements Exchange locaux ou hybrides. Elle fournit des détails sur la taille de la boîte aux lettres et le nombre d'éléments.

Syntaxe

Get-MailboxStatistics [-Identity] <String>

Exemples d'utilisation courante

  • Obtenez des statistiques pour un utilisateur spécifique :

Get-MailboxStatistics -Identity “user@domain.com”

  • Obtenez la taille de toutes les boîtes aux lettres et les derniers horaires de connexion :

Get-MailboxStatistics | Select DisplayName, LastLogonTime, TotalItemSize

Get-MailboxPermission

Cette cmdlet récupère les permissions attribuées à une boîte aux lettres, y compris l'accès délégué.

Syntaxe

Get-MailboxPermission [-Identity] <String>

Exemples d'utilisation courante

  • Afficher toutes les permissions pour une boîte aux lettres :

Get-MailboxPermission -Identity user@domain.com

  • Filtrez pour les permissions non par défaut :

Get-MailboxPermission -Identity “user@domain.com” | Where-Object { $_.IsInherited -eq $false }

Set-Mailbox

Cette cmdlet modifie les paramètres de la boîte aux lettres, tels que les limites de quota, le transfert et l'activation des fonctionnalités.

Syntaxe

Set-Mailbox [-Identity] <String> [-Parameters]

Exemples d'utilisation courante

  • Activez la redirection de boîte aux lettres :

Set-Mailbox -Identity “user@domain.com” -ForwardingSMTPAddress “forwardto@domain.com” -DeliverToMailboxAndForward $true

  • Modifier le quota de la boîte aux lettres :

Set-Mailbox -Identity “user@domain.com” -ProhibitSendQuota 50GB

New-Mailbox

Cette cmdlet crée une nouvelle boîte aux lettres pour un utilisateur dans Exchange Online. Cette cmdlet peut être utilisée pour divers scénarios, y compris la création de boîtes aux lettres pour des utilisateurs individuels, des boîtes aux lettres partagées et des boîtes aux lettres de ressources comme des salles ou des boîtes aux lettres d'équipement.

Syntaxe

New-Mailbox -Name <Name> -MicrosoftOnlineServicesID <UserPrincipalName> -Password (ConvertTo-SecureString -String “<Password>” -AsPlainText -Force)

Exemples d'utilisation courante

  • Créez une boîte aux lettres utilisateur :

New-Mailbox -Name “John Doe” -MicrosoftOnlineServicesID “johndoe@domain.com” -Password (ConvertTo-SecureString -String “P@ssw0rd!” -AsPlainText -Force)

  • Créez une boîte aux lettres partagée :

New-Mailbox -Shared -Name “Support Team” -MicrosoftOnlineServicesID “support@domain.com”

  • Créez une boîte aux lettres de salle :

New-Mailbox -Room -Name “Salle de conférence 1” -MicrosoftOnlineServicesID conference1@domain.com

  • Créez une boîte aux lettres partagée pour une équipe :

New-Mailbox -Shared -Name “HR Team” -MicrosoftOnlineServicesID “hr@domain.com” -Alias “HRTeam”

Remove-Mailbox

Cette cmdlet supprime une boîte aux lettres d'Exchange Online. Cette action peut être appliquée à différents types de boîtes aux lettres, y compris les boîtes aux lettres d'utilisateurs, les boîtes aux lettres partagées et les boîtes aux lettres de ressources (telles que les boîtes aux lettres de salle ou d'équipement).

Syntaxe

Remove-Mailbox -Identity <MailboxIdentity>

Exemples d'utilisation courante

  • Supprimez une boîte aux lettres utilisateur (suppression douce de la boîte aux lettres, ce qui la rend récupérable pendant la période de rétention.) :

Remove-Mailbox -Identity “johndoe@domain.com”

  • Supprimez définitivement une boîte aux lettres (suppression sans donner de période de conservation) :

Remove-Mailbox -Identity “johndoe@domain.com” -Permanent

  • Supprimez uniquement une boîte aux lettres d'archive (laisse la boîte aux lettres principale intacte pour l'utilisateur spécifié) :

Remove-Mailbox -Identity “johndoe@domain.com” -Archive

Get-MailTrafficSummaryReport

Cette cmdlet récupère un résumé du trafic de messagerie pour votre organisation (disponible dans les environnements Microsoft 365).

Syntaxe

Get-MailTrafficSummaryReport [-StartDate] <DateTime> [-EndDate] <DateTime>

Exemple d'utilisation courante

  • Obtenez le trafic de courrier des 7 derniers jours :
      $StartDate = (Get-Date).AddDays(-7)

$EndDate = Get-Date

Get-MailTrafficSummaryReport -StartDate $StartDate -EndDate $EndDate
      

Search-Mailbox

Cette cmdlet recherche un contenu spécifique dans une boîte aux lettres ou dans plusieurs boîtes aux lettres.

Syntaxe

Search-Mailbox [-Identity] <String> [-SearchQuery <Query>] [-TargetMailbox <String>]

Exemples d'utilisation courante

  • Recherchez des e-mails contenant un mot-clé spécifique :

Search-Mailbox -Identity “user@domain.com” -SearchQuery “Subject:’Invoice'”

  • Copiez les résultats de recherche dans une autre boîte aux lettres :

Search-Mailbox -Identity “user@domain.com” -SearchQuery “Keyword” -TargetMailbox “admin@domain.com” -TargetFolder “SearchResults”

Get-MailboxAutoReplyConfiguration

Cette cmdlet récupère les paramètres de réponse automatique (absence du bureau) pour une boîte aux lettres.

Syntaxe

Get-MailboxAutoReplyConfiguration [-Identity] <String>

Exemple d'utilisation courante

  • Obtenez les paramètres de réponse automatique pour un utilisateur spécifique :

Get-MailboxAutoReplyConfiguration -Identity “user@domain.com”

Get-Recipient

Cette cmdlet récupère tous les destinataires (boîtes aux lettres, groupes, contacts, etc.).

Syntaxe

Get-Recipient [-Filter] <String>

Exemples d'utilisation courante

  • Obtenez tous les destinataires :

Get-Recipient

  • Filtrez pour des types spécifiques de destinataires :

Get-Recipient -RecipientTypeDetails MailUser

Filtres de cmdlet

Utilisez des filtres pour affiner les résultats en fonction d'attributs spécifiques.

Syntaxe

Les filtres sont encadrés par des { } et utilisent une structure propriété opérateur valeur :

-Filter {Property -Operator ‘Value’}

Exemple

Get-Mailbox -Filter {DisplayName -like “*Test*”}

Opérateurs communs

  • -eq: Égal
  • -ne : Non égal
  • -like: Correspondance avec joker (* pour zéro ou plusieurs caractères)
  • -notlike : Négation de -like
  • -gt : Plus grand que
  • -lt : Inférieur à

Exemples d'utilisation de filtres avec des Cmdlets

  • Récupérer les boîtes aux lettres pour un domaine spécifique

Get-Mailbox -Filter {EmailAddresses -like ‘*@example.com’}

  • Trouver des boîtes aux lettres créées après une date spécifique

Get-Mailbox -Filter {WhenCreated -gt ‘2023-01-01’}

  • Obtenir des boîtes aux lettres avec des motifs de noms d'affichage spécifiques

Get-Mailbox -Filter {DisplayName -like ‘*Test*’}

  • Obtenir les boîtes aux lettres désactivées

Get-Mailbox -Filter {AccountDisabled -eq $true}

Exemples de combinaison de plusieurs conditions

Vous pouvez combiner des filtres en utilisant des opérateurs logiques tels que -and et -or.

  • Obtenir des utilisateurs avec un UPN spécifique et un nom d'affichage

Get-Mailbox -Filter {UserPrincipalName -like ‘*@example.com’ -and DisplayName -like ‘*John*’}

  • Trouver des boîtes aux lettres activées mais dépassant un seuil de taille

Get-Mailbox -Filter {AccountDisabled -eq $false -and ProhibitSendQuota -gt 10GB}

Exemples de filtrage avec Pipeline

Les filtres peuvent également être combinés avec Where-Object pour un filtrage avancé.

  • Filtrer les boîtes aux lettres par attribut personnalisé

Get-Mailbox | Where-Object { $_.CustomAttribute1 -eq ‘Value1’ }

  • Obtenir les boîtes aux lettres actives connectées au cours des 30 derniers jours

Get-MailboxStatistics | Where-Object { $_.LastLogonTime -gt (Get-Date).AddDays(-30) }

Configurations avancées

  • Utilisez Select-Object pour affiner la sortie et n'afficher que les propriétés pertinentes.

Get-Mailbox | Select-Object DisplayName, PrimarySmtpAddress

  • Exportez les résultats au format CSV pour les rapports.

Get-Mailbox | Export-Csv -Path “Mailboxes.csv” -NoTypeInformation

  • La limite par défaut est de 1000 résultats ; utilisez -ResultSize Unlimited pour récupérer tous les éléments.

Migrez vers Exchange Online en utilisant PowerShell

La migration vers Exchange Online en utilisant PowerShell implique plusieurs étapes, y compris la préparation de l'environnement local, la configuration des points de terminaison de migration et la gestion du processus de migration.

Prérequis

Avant de réaliser la migration, assurez-vous d'avoir :

  • Un abonnement actif à Microsoft 365 ou Office 365 avec Exchange Online.
  • Identifiants administrateur pour votre serveur Exchange local et Exchange Online.
  • Le module PowerShell V2 de Exchange Online (EXO V2) est installé.
  • La configuration d'Exchange Online (Hybride) est établie si vous utilisez la migration hybride.

Migration hybride (pour les organisations avec Exchange sur site et Exchange Online)

Dans un environnement hybride, vous pouvez migrer des boîtes aux lettres tout en maintenant la coexistence entre les boîtes aux lettres sur site et basées sur le cloud.

  1. Installez et configurez le Hybrid Configuration Wizard (HCW).

L'Assistant Configuration Hybride (HCW) est l'outil principal pour configurer un environnement Exchange hybride. Il garantit que votre serveur Exchange local est prêt pour une coexistence hybride avec Exchange Online. Vous pouvez le télécharger et l'exécuter depuis le Centre d'administration Exchange (EAC).

  • Préparez le serveur Exchange on-premises :
  • Exécutez le cmdlet Get-ExchangeServer pour vous assurer que la bonne version est utilisée.
  • Exécutez le cmdlet New-RemoteMailbox pour créer une boîte aux lettres distante pour les utilisateurs en cours de migration.
  • Démarrez une migration en créant un lot de migration à l'aide de la cmdlet New-MigrationBatch :

New-MigrationBatch -Name “MigrationBatch” -SourceEndpoint <OnPremisesExchangeEndpoint> -TargetEndpoint <ExchangeOnlineEndpoint> -MailboxList <MailboxesToMigrate> -AutoStart -AutoComplete

Remplacez les espaces réservés :

  • <OnPremisesExchangeEndpoint> – Le point de terminaison pour votre serveur Exchange local
  • <ExchangeOnlineEndpoint> – Le point de terminaison pour Exchange Online
  • <MailboxesToMigrate> – La liste des boîtes aux lettres à migrer
  • Pour surveiller le processus de migration :

Get-MigrationBatch | Get-MigrationUser

  • Une fois la migration terminée, vous pouvez la compléter en utilisant :

Set-MigrationBatch -Identity “MigrationBatch” -Complete

Migration de basculement (pour les petits environnements, généralement moins de 150 boîtes aux lettres)

Dans une migration par basculement, toutes les boîtes aux lettres sont migrées de Exchange sur site vers Exchange Online en une seule fois.

  1. Utilisez la cmdlet New-MigrationEndpoint pour créer un point de terminaison pour le serveur Exchange local :

New-MigrationEndpoint -Name “CutoverEndpoint” -ExchangeServer “<OnPremisesExchangeServer>” -Type “ExchangeRemoteMove”

  • Utilisez la cmdlet New-MigrationBatch pour créer un lot de migration pour toutes les boîtes aux lettres :

New-MigrationBatch -Name “CutoverMigrationBatch” -SourceEndpoint “CutoverEndpoint” -MailboxList “user1@example.com”, “user2@example.com” -TargetDeliveryDomain “<ExchangeOnlineDomain>” -AutoStart -AutoComplete

  • Utilisez la cmdlet Get-MigrationBatch pour surveiller la migration :

Get-MigrationBatch “CutoverMigrationBatch” | Get-MigrationUser

  • Après que la migration soit terminée, vous pouvez la finaliser en utilisant le cmdlet Set-MigrationBatch :

Set-MigrationBatch -Identity “CutoverMigrationBatch” -Complete

Migration par étapes (pour les environnements de taille moyenne)

Dans une migration par étapes, les boîtes aux lettres sont migrées par phases (généralement par lots) de Exchange sur site vers Exchange Online.

  1. Créez un point de terminaison pour l'Exchange sur site :

New-MigrationEndpoint -Name “StagedEndpoint” -ExchangeServer “<OnPremisesExchangeServer>” -Type “ExchangeRemoteMove”

  • Pour migrer les boîtes aux lettres par étapes, créez un lot de migration en utilisant l'applet de commande New-MigrationBatch :

New-MigrationBatch -Name “StagedMigrationBatch” -SourceEndpoint “StagedEndpoint” -MailboxList “user1@example.com”, “user2@example.com” -TargetDeliveryDomain “<ExchangeOnlineDomain>” -AutoStart -AutoComplete

  • Surveillez la migration en utilisant :

Get-MigrationBatch “StagedMigrationBatch” | Get-MigrationUser

  • Une fois la migration terminée, finalisez-la :

Set-MigrationBatch -Identity “StagedMigrationBatch” -Complete

Meilleures pratiques de sécurité

Assurez des connexions sécurisées

Utilisez des méthodes d'authentification sécurisées

Tirez parti de l'authentification moderne avec OAuth au lieu de l'authentification de base. Vous devez également activer l'authentification à plusieurs facteurs (MFA) pour tous les comptes d'utilisateurs accédant à Exchange Online.

Utilisez des politiques d'accès conditionnel

Configurez l'accès conditionnel dans Microsoft Entra pour appliquer des restrictions telles que l'emplacement, la conformité des appareils et les niveaux de risque des utilisateurs. Assurez-vous de bloquer ou de limiter l'accès depuis des emplacements inconnus ou risqués.

Limiter l'accès à PowerShell

Utilisez le contrôle d'accès basé sur les rôles (RBAC) pour limiter l'accès à PowerShell uniquement aux utilisateurs qui en ont besoin. En tant que précaution supplémentaire, désactivez PowerShell à distance pour les comptes qui n'ont pas besoin d'accès administratif.

Appliquez le chiffrement TLS

Assurez-vous que toutes les connexions à Exchange Online utilisent TLS 1.2 ou supérieur. Vous devriez également auditer régulièrement les systèmes pour confirmer la conformité avec les protocoles de chiffrement modernes.

Utilisez des Privileged Access Workstations (PAWs)

Restreignez les tâches administratives à des postes de travail sécurisés et isolés pour réduire l'exposition aux logiciels malveillants ou aux attaques.

Utilisez des jetons d'application sécurisés

Pour les scripts non surveillés, remplacez les identifiants utilisateur par des enregistrements d'application sécurisés dans Microsoft Entra ID.

Gérez les permissions des utilisateurs et le contrôle d'accès dans Exchange Online

Mettez en œuvre le contrôle d'accès basé sur les rôles (RBAC)

Attribuez des rôles prédéfinis aux utilisateurs selon le principe du moindre privilège. N'attribuez des rôles étendus comme Administrateur Global que lorsque c'est absolument nécessaire.

Surveillez et révisez les permissions régulièrement

Auditez périodiquement les permissions et supprimez les accès inutiles. Comme pratique de routine, utilisez les rapports du Microsoft 365 Security & Compliance Center pour examiner les journaux d'accès.

Séparez les rôles administratifs

Utilisez des comptes séparés pour les tâches administratives et les activités quotidiennes des utilisateurs. Mieux encore, attribuez différents rôles pour différentes fonctions administratives telles que la gestion de boîtes aux lettres et la gestion de la conformité.

Utilisez l'accès Just-in-Time (JIT)

Mettez en œuvre des politiques d'accès JIT en utilisant Microsoft Entra ID Privileged Identity Management (PIM) pour fournir des autorisations élevées temporaires.

Activez l'audit de boîte aux lettres

Activez l'audit pour toutes les boîtes aux lettres afin de suivre les modifications et détecter les accès non autorisés.

Recommandations pour utiliser PowerShell de manière sécurisée dans les environnements de production

Sécurisez vos scripts

Évitez de coder en dur les identifiants ; utilisez des mécanismes de stockage sécurisés comme Azure Key Vault ou Windows Credential Manager. Utilisez également des scripts paramétrés et une gestion sécurisée des entrées pour éviter les vulnérabilités d'injection.

Surveillez et consignez l'activité PowerShell

Activez la journalisation PowerShell (modules, blocs de scripts et journaux de transcription). Vous pouvez également intégrer la journalisation à un système SIEM pour une surveillance en temps réel.

Utilisez des scripts signés

Signez les scripts PowerShell avec un certificat de confiance pour garantir leur intégrité. Pour le prendre en charge, définissez la politique d'exécution PowerShell sur AllSigned car elle n'autorise que les scripts signés.

Exécutez PowerShell avec le moindre privilège

Évitez d'utiliser inutilement des comptes avec des permissions élevées. Préférez plutôt des permissions granulaires pour des tâches spécifiques.

Maintenez PowerShell et les modules à jour

Mettez régulièrement à jour PowerShell vers la dernière version pour corriger les vulnérabilités de sécurité. Non seulement cela, mettez à jour le module de gestion Exchange Online pour bénéficier des dernières fonctionnalités et correctifs.

Limiter l'accès au réseau

Restreignez l'accès aux points de terminaison Exchange Online aux adresses IP connues en utilisant des règles de pare-feu ou Microsoft Entra ID Named Locations.

Chiffrer les données sensibles

Utilisez SecureString ou d'autres méthodes de chiffrement pour stocker et transmettre des données sensibles de manière sécurisée.

Netwrix Auditor for Exchange

Conclusion

PowerShell pour Exchange Online offre des capacités puissantes pour gérer et automatiser les tâches administratives, permettant aux administrateurs de gérer des opérations complexes telles que les mises à jour en masse des utilisateurs, les rapports et les modifications de configuration. En adoptant une authentification moderne, y compris OAuth et MFA, les organisations peuvent sécuriser l'accès à Exchange Online. L'automatisation via PowerShell minimise l'effort manuel, réduit les erreurs humaines et améliore la cohérence opérationnelle globale et la scalabilité.

Pour des configurations avancées et un apprentissage approfondi, consultez la documentation officielle de Microsoft, les modules de formation PowerShell et les forums communautaires.

Documentation Microsoft

  • Documentation Exchange Online PowerShell – Guides complets sur la connexion, la gestion des boîtes aux lettres, les tâches de conformité et plus encore.
  • Microsoft Learn – Modules de formation gratuits sur Exchange Online, le scriptage PowerShell et les meilleures pratiques de sécurité.

FAQ

Comment se connecter à Exchange Online PowerShell étape par étape ?

La connexion à Exchange Online PowerShell est simple lorsque vous suivez la séquence appropriée. Tout d'abord, assurez-vous d'avoir le module Exchange Online PowerShell installé en exécutant Install-Module -Name ExchangeOnlineManagement dans une session PowerShell élevée. Une fois installé, utilisez Connect-ExchangeOnline -UserPrincipalName your-admin@domain.com pour établir la connexion. Vous serez invité à une authentification multi-facteurs si elle est activée sur votre compte. Après une authentification réussie, vérifiez votre connexion avec Get-Mailbox -ResultSize 1 pour tester les fonctionnalités de base. N'oubliez pas de toujours vous déconnecter en utilisant Disconnect-ExchangeOnline lorsque vous avez terminé afin de maintenir les meilleures pratiques de sécurité.

Accès refusé à Exchange Online PowerShell – comment résoudre le problème ?

Les erreurs d'accès refusé proviennent généralement de permissions insuffisantes ou de problèmes d'authentification. Commencez par vérifier que votre compte dispose des rôles administratifs nécessaires d'Exchange Online – au minimum, vous avez besoin des permissions d'Administrateur Exchange ou d'Administrateur Global. Si les rôles sont corrects, vérifiez si votre organisation utilise des politiques d'Accès Conditionnel qui pourraient bloquer les connexions PowerShell. Effacez toutes les informations d'identification mises en cache en utilisant Remove-StoredCredential et essayez de vous reconnecter. Pour les problèmes persistants, assurez-vous que vous utilisez la dernière version du module ExchangeOnlineManagement, car les anciennes versions peuvent avoir des problèmes de compatibilité avec les exigences d'authentification moderne.

Impossible de se connecter à Exchange Online PowerShell – quelles sont les solutions courantes ?

Les échecs de connexion se répartissent généralement en trois catégories : problèmes d'authentification, problèmes de réseau ou conflits de modules. Tout d'abord, vérifiez que vous utilisez la syntaxe correcte : Connect-ExchangeOnline -UserPrincipalName plutôt que des méthodes de connexion obsolètes. Vérifiez votre connectivité réseau et les paramètres de votre pare-feu – Exchange Online nécessite un accès à des points de terminaison Microsoft spécifiques. Si vous êtes derrière un proxy d'entreprise, configurez PowerShell pour utiliser vos paramètres de proxy. Des conflits de modules peuvent survenir lorsque vous avez à la fois les anciens modules MSOnline et le nouveau module ExchangeOnlineManagement installés simultanément. Désinstallez les modules obsolètes et privilégiez le module ExchangeOnlineManagement unifié pour une expérience plus épurée.

Comment installer le module PowerShell pour Exchange Online ?

L'installation du module PowerShell pour Exchange Online nécessite une seule commande, mais il est important de bien gérer les prérequis. Exécutez PowerShell en tant qu'administrateur et lancez Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber. Le paramètre -Force garantit que vous obtenez la dernière version, tandis que -AllowClobber gère les conflits éventuels avec les cmdlets existants. Si vous rencontrez des erreurs de politique d'exécution, définissez temporairement la politique en utilisant Set-ExecutionPolicy RemoteSigned -Scope CurrentUser. Pour les environnements où vous ne pouvez pas modifier les politiques d'exécution, téléchargez le module manuellement depuis la Galerie PowerShell et installez-le en utilisant la méthode hors ligne. Vérifiez toujours l'installation en exécutant Get-Module ExchangeOnlineManagement -ListAvailable pour confirmer que le module est correctement installé.

Comment se connecter à Exchange Online PowerShell avec MFA ?

L'authentification multi-facteurs avec Exchange Online PowerShell est simple lorsqu'elle est correctement configurée. La cmdlet moderne Connect-ExchangeOnline gère automatiquement MFA – il suffit d'utiliser Connect-ExchangeOnline -UserPrincipalName your-admin@domain.com et vous serez redirigé vers une fenêtre de navigateur pour compléter la MFA. Pour les scripts non surveillés ou l'automatisation, configurez l'authentification basée sur les certificats ou utilisez un principal de service avec Connect-ExchangeOnline -CertificateThumbprint ou Connect-ExchangeOnline -AppId. Évitez d'utiliser l'authentification de base ou les mots de passe d'application, car Microsoft est en train de supprimer ces méthodes héritées. L'authentification moderne n'est pas seulement plus sécurisée – elle est également plus fiable et offre une meilleure intégration avec les politiques de gestion des identités de votre organisation.

Partager sur

En savoir plus

À propos de l'auteur

Asset Not Found

Jonathan Blackwell

Responsable du développement logiciel

Depuis 2012, Jonathan Blackwell, ingénieur et innovateur, a fourni un leadership en ingénierie qui a placé Netwrix GroupID à l'avant-garde de la gestion de groupes et d'utilisateurs pour les environnements Active Directory et Azure AD. Son expérience en développement, marketing et ventes permet à Jonathan de comprendre pleinement le marché de l'Identity Management et la façon de penser des acheteurs.