Dans le monde de l’administration des systèmes et réseaux, la gestion des boîtes aux lettres, qu’elles soient individuelles ou partagées, est une tâche essentielle. Les scripts PowerShell suivants permettent de récupérer les informations sur les délégations des boîtes aux lettres classiques et partagées.
Se connecter à Exchange Online
Connect-ExchangeOnline
Extraire les redirections de boîtes aux lettres
Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName,ForwardingAddress,ForwardingSmtpAddress,DeliverToMailboxAndForward
Liste de toutes les boîtes mail ainsi que leurs alias :
Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, @{Name='Aliases';Expression={$_.EmailAddresses | Where-Object {$_ -like 'smtp:*'} | ForEach-Object {$_ -replace 'smtp:',''}}}
Script pour les Délégations des Boîtes aux Lettres Classiques
Voici le script complet pour les boîtes aux lettres classiques :
# Récupérer toutes les boîtes aux lettres
$mailboxes = Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited
# Créer une liste pour stocker les résultats
$result = @()
foreach ($mailbox in $mailboxes) {
Write-Output "Processing mailbox: $($mailbox.PrimarySmtpAddress)"
# Récupérer les délégations pour chaque boîte aux lettres
$delegates = Get-MailboxPermission -Identity $mailbox.Identity | Where-Object { $_.User -ne "NT AUTHORITY\SELF" }
if ($delegates) {
foreach ($delegate in $delegates) {
$result += [PSCustomObject]@{
Mailbox = $mailbox.PrimarySmtpAddress
Delegate = $delegate.User
AccessRights = $delegate.AccessRights -join ", "
}
}
} else {
$result += [PSCustomObject]@{
Mailbox = $mailbox.PrimarySmtpAddress
Delegate = "No Delegates"
AccessRights = "No Access Rights"
}
}
}
# Afficher les résultats dans la console
$result | Format-Table -AutoSize
# Exporter les résultats en fichier CSV
$result | Export-Csv -Path "C:\tmp\UserMailboxesDelegation.csv" -NoTypeInformation
Script pour les Boîtes aux Lettres Partagées
Voici le script complet pour les boîtes aux lettres partagées :
# Récupérer toutes les boîtes aux lettres
$mailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited
# Créer une liste pour stocker les résultats
$result = @()
foreach ($mailbox in $mailboxes) {
Write-Output "Processing mailbox: $($mailbox.PrimarySmtpAddress)"
# Récupérer les délégations pour chaque boîte aux lettres
$delegates = Get-MailboxPermission -Identity $mailbox.Identity | Where-Object { $_.User -ne "NT AUTHORITY\SELF" }
if ($delegates) {
foreach ($delegate in $delegates) {
$result += [PSCustomObject]@{
Mailbox = $mailbox.PrimarySmtpAddress
Delegate = $delegate.User
AccessRights = $delegate.AccessRights -join ", "
}
}
} else {
$result += [PSCustomObject]@{
Mailbox = $mailbox.PrimarySmtpAddress
Delegate = "No Delegates"
AccessRights = "No Access Rights"
}
}
}
# Afficher les résultats dans la console
$result | Format-Table -AutoSize
# Exporter les résultats en fichier CSV
$result | Export-Csv -Path "C:\tmp\SharedMailboxesDelegation.csv" -NoTypeInformation
Explication des Scripts
- Récupération des Boîtes aux Lettres :
$mailboxes = Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited
$mailboxes = Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited
La commande Get-Mailbox permet de récupérer toutes les boîtes aux lettres, qu’elles soient classiques ou partagées.
2. Initialisation de la Liste des Résultats :
$result = @()
Une liste vide est créée pour stocker les résultats.
3. Traitement de chaque Boîte aux Lettres :
foreach ($mailbox in $mailboxes) {
Write-Output « Processing mailbox: $($mailbox.PrimarySmtpAddress) »
$delegates = Get-MailboxPermission -Identity $mailbox.Identity | Where-Object { $_.User -ne « NT AUTHORITY\SELF » }
Pour chaque boîte aux lettres, la commande Get-MailboxPermission récupère les délégations, excluant l’utilisateur NT AUTHORITY\SELF.
4. Stockage des Résultats :
if ($delegates) {
foreach ($delegate in $delegates) {
$result += [PSCustomObject]@{
Mailbox = $mailbox.PrimarySmtpAddress
Delegate = $delegate.User
AccessRights = $delegate.AccessRights -join « , «
}
}
} else {
$result += [PSCustomObject]@{
Mailbox = $mailbox.PrimarySmtpAddress
Delegate = « No Delegates »
AccessRights = « No Access Rights »
}
}
Les informations sur les délégations sont ajoutées à la liste des résultats. Si aucune délégation n’est trouvée, des valeurs par défaut sont ajoutées.
5. Affichage des Résultats :
$result | Format-Table -AutoSize
6. Exportation des Résultats en Fichier CSV :
$result | Export-Csv -Path « UserMailboxesDelegation.csv » -NoTypeInformation
$result | Export-Csv -Path « SharedMailboxesDelegation.csv » -NoTypeInformation
Ces scripts permettent de simplifier la gestion des délégations de boîtes aux lettres dans Exchange, rendant le processus plus efficace et moins chronophage. N’hésitez pas à les adapter à vos besoins spécifiques pour optimiser votre administration des systèmes.
