skip to content

Recherche

Exchange

Administration Exchange - boîtes mail, groupes de distribution, droits et scripts PowerShell !

365
Publié le
Mis à jour le

Exchange Online est le service de messagerie cloud de Microsoft offrant des fonctionnalités d’email, calendrier et contacts.

📦 Installation et connexion

📌 Action🧠 Commande PowerShell
🔧 Installer module ExchangeInstall-Module -Name ExchangeOnlineManagement -Force
🔗 Se connecterConnect-ExchangeOnline
🔗 Se connecter (MFA)Connect-ExchangeOnline -UserPrincipalName admin@tenant.com
✅ Vérifier connexionGet-OrganizationConfig
🚪 Se déconnecterDisconnect-ExchangeOnline -Confirm:$false

📧 Gestion des boîtes aux lettres

Types de boîtes aux lettres

📌 Type💰 Licence requise💼 Usage
UtilisateurOffice 365/M365Boîte personnelle
PartagéeAucuneÉquipe, service
Ressource - SalleExchange Online Plan 1Réservation salles
Ressource - ÉquipementExchange Online Plan 1Matériel partagé
📌 Action🧠 Commande
📋 Lister toutes les boîtesGet-Mailbox -ResultSize Unlimited
🔍 Rechercher boîte mailGet-Mailbox -Identity "jdupont@tenant.com"
👤 Créer boîte utilisateurNew-Mailbox -Name "Jean Dupont" -UserPrincipalName "jdupont@tenant.com" -FirstName "Jean" -LastName "Dupont"
📮 Créer boîte partagéeNew-Mailbox -Name "Support" -PrimarySmtpAddress "support@tenant.com" -Shared
🏢 Créer boîte ressourceNew-Mailbox -Name "Salle Réunion A" -Room -PrimarySmtpAddress "salle-a@tenant.com"
✏️ Modifier nom d’affichageSet-Mailbox -Identity "jdupont@tenant.com" -DisplayName "Jean Dupont - IT"
🗑️ Supprimer boîte mailRemove-Mailbox -Identity "jdupont@tenant.com" -Confirm:$false
🔒 Désactiver boîte mailSet-Mailbox -Identity "jdupont@tenant.com" -AccountDisabled:$true

👥 Groupes de distribution

Types de groupes Exchange

📌 Type🔧 Caractéristiques💼 Usage
Liste de distribution (DL)Liste statique, gestion manuelleÉquipes, départements
Liste de distribution dynamique (DDL)Basé sur critères AD automatiquesTous les managers, nouveaux employés
Groupe de sécuritéPeut être utilisé pour permissionsAccès SharePoint + distribution
Groupe Office 365Intégré SharePoint/TeamsCollaboration complète
📌 Action🧠 Commande
📋 Lister tous les groupesGet-DistributionGroup -ResultSize Unlimited
🆕 Créer groupe distributionNew-DistributionGroup -Name "IT Team" -PrimarySmtpAddress "it@tenant.com"
🆕 Créer liste dynamiqueNew-DynamicDistributionGroup -Name "Tous IT" -Filter "Department -eq 'IT'"
➕ Ajouter membreAdd-DistributionGroupMember -Identity "IT Team" -Member "jdupont@tenant.com"
➖ Retirer membreRemove-DistributionGroupMember -Identity "IT Team" -Member "jdupont@tenant.com"
👁️ Voir membresGet-DistributionGroupMember -Identity "IT Team"
✏️ Modifier descriptionSet-DistributionGroup -Identity "IT Team" -Notes "Équipe informatique principale"
🗑️ Supprimer groupeRemove-DistributionGroup -Identity "IT Team" -Confirm:$false

🔐 Permissions et délégations

📌 Action🧠 Commande
👁️ Voir permissions boîteGet-MailboxPermission -Identity "shared@tenant.com"
➕ Ajouter accès completAdd-MailboxPermission -Identity "shared@tenant.com" -User "jdupont@tenant.com" -AccessRights FullAccess
📧 Ajouter “Envoyer en tant que”Add-RecipientPermission -Identity "shared@tenant.com" -Trustee "jdupont@tenant.com" -AccessRights SendAs
📤 Ajouter “Envoyer de la part de”Set-Mailbox -Identity "shared@tenant.com" -GrantSendOnBehalfTo "jdupont@tenant.com"
🗑️ Retirer permissionRemove-MailboxPermission -Identity "shared@tenant.com" -User "jdupont@tenant.com" -AccessRights FullAccess
🔄 Activer automappingAdd-MailboxPermission -Identity "shared@tenant.com" -User "jdupont@tenant.com" -AccessRights FullAccess -AutoMapping $true
🚫 Désactiver automappingAdd-MailboxPermission -Identity "shared@tenant.com" -User "jdupont@tenant.com" -AccessRights FullAccess -AutoMapping $false

Types de permissions

📌 Permission🔧 Accès💡 Usage typique
FullAccessLecture/écriture complèteAssistante, suppléant
SendAsEnvoyer comme propriétaireCommunication officielle
SendOnBehalfEnvoyer de la part deDélégation visible
ReadPermissionLecture seuleAudit, consultation

📊 Quotas et stockage

📌 Action🧠 Commande
👁️ Voir quota boîte mailGet-Mailbox -Identity "jdupont@tenant.com" | Select ProhibitSendQuota,ProhibitSendReceiveQuota
⚙️ Modifier quota utilisateurSet-Mailbox -Identity "jdupont@tenant.com" -ProhibitSendQuota 90GB -ProhibitSendReceiveQuota 100GB
📈 Voir utilisation stockageGet-MailboxStatistics -Identity "jdupont@tenant.com" | Select DisplayName,TotalItemSize,ItemCount
📋 Top 10 plus grosses boîtesGet-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Sort TotalItemSize -Descending | Select -First 10 DisplayName,TotalItemSize

Limites de stockage par licence

📌 Licence📦 Quota standard📈 Archivage💰 Coût supplémentaire
Exchange Online Plan 150 GBOptionnelArchivage +/mois
Office 365 E3100 GBInclus illimité-
Office 365 E5100 GBInclus illimité-
Boîte partagée50 GB gratuit → 100GB avec licence E3Disponible avec licence-

📊 Scripts d’export et gestion

Export liste des boîtes mail

# Export complet avec statistiques
$mailboxes = Get-Mailbox -ResultSize Unlimited
$results = foreach($mailbox in $mailboxes) {
    $stats = Get-MailboxStatistics -Identity $mailbox.UserPrincipalName
    [PSCustomObject]@{
        DisplayName = $mailbox.DisplayName
        UserPrincipalName = $mailbox.UserPrincipalName
        MailboxType = $mailbox.RecipientTypeDetails
        TotalSize = $stats.TotalItemSize
        ItemCount = $stats.ItemCount
        LastLogon = $stats.LastLogonTime
        ProhibitSendQuota = $mailbox.ProhibitSendQuota
    }
}
$results | Export-Csv -Path "C:\temp\ExchangeMailboxes.csv" -NoTypeInformation -Encoding UTF8

Export groupes de distribution et membres

# Export détaillé des groupes DL
$groups = Get-DistributionGroup -ResultSize Unlimited
$results = foreach($group in $groups) {
    $members = Get-DistributionGroupMember -Identity $group.Identity
    foreach($member in $members) {
        [PSCustomObject]@{
            GroupName = $group.DisplayName
            GroupEmail = $group.PrimarySmtpAddress
            MemberName = $member.DisplayName
            MemberEmail = $member.PrimarySmtpAddress
            MemberType = $member.RecipientTypeDetails
        }
    }
}
$results | Export-Csv -Path "C:\temp\DistributionGroups.csv" -NoTypeInformation -Encoding UTF8

Création boîtes mail en masse via CSV

# Format CSV : DisplayName,UserPrincipalName,FirstName,LastName,Department
$users = Import-Csv -Path "C:\temp\NewMailboxes.csv" -Delimiter ";"
 
foreach($user in $users) {
    try {
        New-Mailbox -Name $user.DisplayName `
                   -UserPrincipalName $user.UserPrincipalName `
                   -FirstName $user.FirstName `
                   -LastName $user.LastName `
                   -Department $user.Department
        Write-Host "✓ Boîte créée : $($user.DisplayName)" -ForegroundColor Green
    } catch {
        Write-Host "✗ Erreur création $($user.DisplayName) : $($_.Exception.Message)" -ForegroundColor Red
    }
}

Ajout membres groupes DL en masse

# Format CSV : GroupName,MemberEmail
$members = Import-Csv -Path "C:\temp\GroupMembers.csv" -Delimiter ";"
 
foreach($member in $members) {
    try {
        Add-DistributionGroupMember -Identity $member.GroupName -Member $member.MemberEmail
        Write-Host "✓ Ajouté $($member.MemberEmail) à $($member.GroupName)" -ForegroundColor Green
    } catch {
        Write-Host "✗ Erreur ajout $($member.MemberEmail) : $($_.Exception.Message)" -ForegroundColor Red
    }
}

🚨 Dépannage courant

📌 Problème🔧 Solution
📧 Emails non livrésVérifier Get-MessageTrace, règles transport, quotas
🔒 Accès refusé boîte partagéeVérifier permissions, automapping, cache Outlook
⏱️ Synchronisation lenteForcer sync AD : Start-ADSyncSyncCycle -PolicyType Delta
📱 Mobile ne reçoit plusRéinitialiser partenariat : Remove-MobileDevice puis reconnecter
💾 Quota dépasséVérifier Get-MailboxStatistics, activer archivage