La gestion de Microsoft 365 (anciennement Office 365) nécessite souvent PowerShell pour les opérations en masse, l’automatisation et l’accès aux paramètres non disponibles dans le centre d’administration. Ce guide couvre la méthode moderne de connexion avec le module ExchangeOnlineManagement ainsi que la connexion à d’autres services Microsoft 365.

Important : Microsoft a abandonné l’authentification de base pour Exchange Online en octobre 2022. L’ancienne méthode avec New-PSSession ne fonctionne plus. Utilisez la méthode moderne avec les modules décrite ci-dessous.

Prérequis

  • Windows PowerShell 5.1 ou PowerShell 7+
  • Compte administrateur Microsoft 365
  • Connectivité Internet
  • Module PowerShellGet (inclus dans Windows 10/11 et Server 2016+)

Installation des modules nécessaires

Module de gestion Exchange Online

# Installer le module (exécuter PowerShell en tant qu'administrateur)
Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber

# Ou mettre à jour s'il est déjà installé
Update-Module -Name ExchangeOnlineManagement

# Vérifier l'installation
Get-Module -Name ExchangeOnlineManagement -ListAvailable

Autres modules Microsoft 365 utiles

# Microsoft Graph (remplace les modules AzureAD et MSOnline)
Install-Module -Name Microsoft.Graph -Force

# Microsoft Teams
Install-Module -Name MicrosoftTeams -Force

# SharePoint Online
Install-Module -Name Microsoft.Online.SharePoint.PowerShell -Force

Connexion à Exchange Online

Connexion standard (avec support MFA)

# Importer le module
Import-Module ExchangeOnlineManagement

# Se connecter — ouvre une fenêtre de navigateur pour l'authentification
Connect-ExchangeOnline -UserPrincipalName admin@votredomaine.com

Une fenêtre de navigateur s’ouvre pour l’authentification. Complétez votre mot de passe et la vérification MFA.

Connexion sans invite de navigateur

Pour les scripts automatisés dans les environnements sans navigateur :

# Authentification par certificat (recommandée pour l'automatisation)
Connect-ExchangeOnline -CertificateThumbprint "THUMBPRINT" `
    -AppId "APP-ID" `
    -Organization "votredomaine.onmicrosoft.com"

Connexion à un tenant spécifique (pour partenaires/MSPs)

Connect-ExchangeOnline -UserPrincipalName admin@partenaire.com `
    -DelegatedOrganization "tenant-client.onmicrosoft.com"

Tâches de gestion courantes

Une fois connecté, vous pouvez exécuter les cmdlets Exchange Online :

Gestion des boîtes aux lettres

# Lister toutes les boîtes aux lettres
Get-EXOMailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress

# Obtenir une boîte aux lettres spécifique
Get-EXOMailbox -Identity "utilisateur@votredomaine.com" | Format-List

# Obtenir les statistiques de la boîte aux lettres (taille, nombre d'éléments)
Get-EXOMailboxStatistics -Identity "utilisateur@votredomaine.com" | 
    Select-Object DisplayName, TotalItemSize, ItemCount

# Configurer les propriétés de la boîte aux lettres
Set-Mailbox -Identity "utilisateur@votredomaine.com" -MaxReceiveSize 50MB

Groupes de distribution

# Lister tous les groupes de distribution
Get-DistributionGroup -ResultSize Unlimited

# Obtenir les membres d'un groupe
Get-DistributionGroupMember -Identity "equipe-ventes@votredomaine.com"

# Ajouter un membre
Add-DistributionGroupMember -Identity "equipe-ventes" -Member "nouveauutilisateur@votredomaine.com"

Règles de flux de messagerie (règles de transport)

# Lister toutes les règles de transport
Get-TransportRule | Select-Object Name, State, Priority

# Désactiver une règle
Disable-TransportRule -Identity "Nom de la règle"

Connexion à d’autres services Microsoft 365

Microsoft Graph (utilisateurs, groupes, licences)

Import-Module Microsoft.Graph

# Se connecter avec des permissions spécifiques
Connect-MgGraph -Scopes "User.Read.All", "Group.ReadWrite.All"

# Lister tous les utilisateurs
Get-MgUser -All | Select-Object DisplayName, UserPrincipalName, AccountEnabled

# Obtenir les informations de licences
Get-MgSubscribedSku | Select-Object SkuPartNumber, ConsumedUnits, 
    @{N='Total';E={$_.PrepaidUnits.Enabled}}

Microsoft Teams

Import-Module MicrosoftTeams

Connect-MicrosoftTeams

# Lister toutes les équipes
Get-Team | Select-Object DisplayName, GroupId, Visibility

Déconnexion des sessions

Déconnectez-vous toujours à la fin pour libérer les ressources :

# Déconnecter Exchange Online
Disconnect-ExchangeOnline -Confirm:$false

# Déconnecter Microsoft Graph
Disconnect-MgGraph

# Déconnecter Teams
Disconnect-MicrosoftTeams

Méthode obsolète (ne fonctionne plus)

Pour référence historique, voici l’ancienne méthode de connexion. Elle a cessé de fonctionner en octobre 2022 lorsque Microsoft a désactivé l’authentification de base :

# OBSOLÈTE — NE PAS UTILISER
$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange `
    -ConnectionUri https://ps.outlook.com/powershell/ `
    -Credential $cred -Authentication Basic -AllowRedirection
Import-PSSession $session -Prefix o365

Si vous avez encore des scripts utilisant cette méthode, mettez-les à jour pour utiliser Connect-ExchangeOnline.

Dépannage

Module non trouvé

# Mettre à jour PowerShellGet d'abord
Install-Module -Name PowerShellGet -Force
# Puis réessayer l'installation d'ExchangeOnlineManagement

Accès refusé

Assurez-vous que votre compte dispose des rôles administrateur requis :

  • Exchange Administrator pour la gestion des boîtes aux lettres
  • Global Administrator pour un accès complet
  • Security Administrator pour les fonctions de conformité

Timeout de connexion derrière un proxy

Connect-ExchangeOnline -UserPrincipalName admin@votredomaine.com `
    -PSSessionOption (New-PSSessionOption -ProxyAccessType IEConfig)

Résumé

La méthode moderne pour gérer Microsoft 365 via PowerShell est le module ExchangeOnlineManagement avec Connect-ExchangeOnline. Il prend en charge la MFA, est activement maintenu par Microsoft et remplace la méthode obsolète d’authentification de base. Pour la gestion des utilisateurs et groupes en dehors d’Exchange, utilisez le module Microsoft.Graph.

Articles connexes