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 Exchange | Install-Module -Name ExchangeOnlineManagement -Force |
🔗 Se connecter | Connect-ExchangeOnline |
🔗 Se connecter (MFA) | Connect-ExchangeOnline -UserPrincipalName admin@tenant.com |
✅ Vérifier connexion | Get-OrganizationConfig |
🚪 Se déconnecter | Disconnect-ExchangeOnline -Confirm:$false |
📧 Gestion des boîtes aux lettres
Types de boîtes aux lettres
📌 Type | 💰 Licence requise | 💼 Usage |
---|
Utilisateur | Office 365/M365 | Boîte personnelle |
Partagée | Aucune | Équipe, service |
Ressource - Salle | Exchange Online Plan 1 | Réservation salles |
Ressource - Équipement | Exchange Online Plan 1 | Matériel partagé |
📌 Action | 🧠 Commande |
---|
📋 Lister toutes les boîtes | Get-Mailbox -ResultSize Unlimited |
🔍 Rechercher boîte mail | Get-Mailbox -Identity "jdupont@tenant.com" |
👤 Créer boîte utilisateur | New-Mailbox -Name "Jean Dupont" -UserPrincipalName "jdupont@tenant.com" -FirstName "Jean" -LastName "Dupont" |
📮 Créer boîte partagée | New-Mailbox -Name "Support" -PrimarySmtpAddress "support@tenant.com" -Shared |
🏢 Créer boîte ressource | New-Mailbox -Name "Salle Réunion A" -Room -PrimarySmtpAddress "salle-a@tenant.com" |
✏️ Modifier nom d’affichage | Set-Mailbox -Identity "jdupont@tenant.com" -DisplayName "Jean Dupont - IT" |
🗑️ Supprimer boîte mail | Remove-Mailbox -Identity "jdupont@tenant.com" -Confirm:$false |
🔒 Désactiver boîte mail | Set-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 automatiques | Tous les managers, nouveaux employés |
Groupe de sécurité | Peut être utilisé pour permissions | Accès SharePoint + distribution |
Groupe Office 365 | Intégré SharePoint/Teams | Collaboration complète |
📌 Action | 🧠 Commande |
---|
📋 Lister tous les groupes | Get-DistributionGroup -ResultSize Unlimited |
🆕 Créer groupe distribution | New-DistributionGroup -Name "IT Team" -PrimarySmtpAddress "it@tenant.com" |
🆕 Créer liste dynamique | New-DynamicDistributionGroup -Name "Tous IT" -Filter "Department -eq 'IT'" |
➕ Ajouter membre | Add-DistributionGroupMember -Identity "IT Team" -Member "jdupont@tenant.com" |
➖ Retirer membre | Remove-DistributionGroupMember -Identity "IT Team" -Member "jdupont@tenant.com" |
👁️ Voir membres | Get-DistributionGroupMember -Identity "IT Team" |
✏️ Modifier description | Set-DistributionGroup -Identity "IT Team" -Notes "Équipe informatique principale" |
🗑️ Supprimer groupe | Remove-DistributionGroup -Identity "IT Team" -Confirm:$false |
🔐 Permissions et délégations
📌 Action | 🧠 Commande |
---|
👁️ Voir permissions boîte | Get-MailboxPermission -Identity "shared@tenant.com" |
➕ Ajouter accès complet | Add-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 permission | Remove-MailboxPermission -Identity "shared@tenant.com" -User "jdupont@tenant.com" -AccessRights FullAccess |
🔄 Activer automapping | Add-MailboxPermission -Identity "shared@tenant.com" -User "jdupont@tenant.com" -AccessRights FullAccess -AutoMapping $true |
🚫 Désactiver automapping | Add-MailboxPermission -Identity "shared@tenant.com" -User "jdupont@tenant.com" -AccessRights FullAccess -AutoMapping $false |
Types de permissions
📌 Permission | 🔧 Accès | 💡 Usage typique |
---|
FullAccess | Lecture/écriture complète | Assistante, suppléant |
SendAs | Envoyer comme propriétaire | Communication officielle |
SendOnBehalf | Envoyer de la part de | Délégation visible |
ReadPermission | Lecture seule | Audit, consultation |
📊 Quotas et stockage
📌 Action | 🧠 Commande |
---|
👁️ Voir quota boîte mail | Get-Mailbox -Identity "jdupont@tenant.com" | Select ProhibitSendQuota,ProhibitSendReceiveQuota |
⚙️ Modifier quota utilisateur | Set-Mailbox -Identity "jdupont@tenant.com" -ProhibitSendQuota 90GB -ProhibitSendReceiveQuota 100GB |
📈 Voir utilisation stockage | Get-MailboxStatistics -Identity "jdupont@tenant.com" | Select DisplayName,TotalItemSize,ItemCount |
📋 Top 10 plus grosses boîtes | Get-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 1 | 50 GB | Optionnel | Archivage +/mois |
Office 365 E3 | 100 GB | Inclus illimité | - |
Office 365 E5 | 100 GB | Inclus illimité | - |
Boîte partagée | 50 GB gratuit → 100GB avec licence E3 | Disponible 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és | Vérifier Get-MessageTrace , règles transport, quotas |
🔒 Accès refusé boîte partagée | Vérifier permissions, automapping, cache Outlook |
⏱️ Synchronisation lente | Forcer sync AD : Start-ADSyncSyncCycle -PolicyType Delta |
📱 Mobile ne reçoit plus | Réinitialiser partenariat : Remove-MobileDevice puis reconnecter |
💾 Quota dépassé | Vérifier Get-MailboxStatistics , activer archivage |