Travaillant de plus en plus sur Exchange ces derniers temps, j’essaye de maximiser mon utilisation courante du Exchange Management Shell. Je vais partager quelques snippets permettant de récupérer des informations qu’il est plus difficile voire impossible de récupérer via la console graphique. Ces snippets peuvent être de bonnes bases pour ensuite peaufiner une recherche, ou simplement avoir la syntaxe pour obtenir une autre information, ou encore pour être intégrés dans un script. A noter que j’ai utilisé ce code sur un Exchange on Premise, il est possible que certaines commandes soient à adapter pour un usage sur Exchange Online.
Liste des mailbox n’ayant pas OWA activé
Get-CasMailbox | Where-Object { $_.OWAEnabled -eq $false }
Liste des mailbox n’ayant pas ActiveSync activé
Get-CasMailbox | Where-Object { $_.ActiveSyncEnabled -eq $false }
La commande Get-CasMailbox permet de retourner d’autres informations, il suffit donc de modifier la propriété que l’on utilise comme critère pour obtenir un nouveau filtre.
Récupération de la taille des mailbox
Get-Mailbox | Get-MailboxStatistics | sort TotalItemSize | ft DisplayName, TotalItemSize, Database
Liste des mailbox n’étant pas sous la règle du quota par défaut de la database
Get-Mailbox | Where-Object {$_.UseDatabaseQuotaDefaults -eq $false} | sort ProhibitSendQuota | ft DisplayName, Database, ProhibitSendQuota
Vérifier les permissions d’un utilisateur sur les mailbox
Get-Mailbox | Get-MailboxPermission | Where-Object {$_.User -like "DOMAINE\enguerrand"} | ft AccessRights, IsInherited, Deny -GroupBy identity
Pour ce snippet, il suffit d’ajouter un paramètre à l’instruction Get-Mailbox pour cibler une boîte particulière.
Lister toutes les mailbox par type
Get-Mailbox | sort RecipientTypeDetails | ft DisplayName, Alias, PrimarySmtpAddress -GroupBy RecipientTypeDetails
Visualiser le trafic sur une mailbox
Get-TransportServer | Get-MessageTrackingLog -Start "01/01/1990 02:00:00" -End "02/01/1990 03:00:00" -Recipients enguerrand@domaine.local
Il est possible de remplacer le paramètre -Recipients par -Sender si l’on souhaite avoir un autre point de vue. Les deux paramètres sont cumulables, permettant de centrer la recherche sur un émetteur et un destinataire. Le paramètre -EventID pouvant prendre les valeurs SEND ou RECEIVE par exemple offre la possibilité de n’afficher uniquement les mails effectivement reçus ou envoyés.
Lister les mails reçus sur une mailbox
Get-TransportServer | Get-MessageTrackingLog -Start "01/01/1990 02:00:00" -End "02/01/1990 03:00:00" -Recipients enguerrand@domaine.local -EventID Receive
Vérifier si une mailbox a des éléments supprimés récupérables
Get-Mailbox enguerrand | Get-MailboxFolderStatistics | Where-Object { $_.Name -like "Recoverable Items" -and $_.ItemsInFolder -gt 0 }
Lister les mailbox attachées à des utilisateurs présents dans une OU
Get-Mailbox | Where-Object {$_.DistinguishedName -like "*OU=Sales*"} | select alias