PI Services

Le blog des collaborateurs de PI Services

Quelques commandes Powershell utiles pour Exchange

Contexte

Avec les cmdlets de base d’Exchange il est relativement simple d’obtenir certaines informations. Mais il est possible d’aller beaucoup plus loin dans le traitement de ces informations en combinant plusieurs cmdlet Exchange.

Les différentes commandes ci-dessous sont des cas concrets que j’ai eu à gérer au quotidien dans l’exploitation d’Exchange 2010.

Cmdlets

Rechercher un mail sur tous vos serveurs HUB à la fois :

Get-TransportServer SRV-EXCH-HUB-0* | Get-MessageTrackingLog -ResultSize Unlimited -Start "06/02/2014 19:00:00" -End "06/03/2014 01:00:00" –Sender “mon-adresse-mail@mon-domaine.fr”

Voir tous les droits sur une BAL :

Get-MailboxPermission login-bal | Where {$_.user -notlike "S-1-5*"} | Sort user | FT user,AccessRights,IsInherited –a

Voir les droits Send-As d’une BAL :

Get-Mailbox login-bal | Get-ADPermission | Where {($_.ExtendedRights -like “*Send-As*”) -and -not ($_.User -like “NT AUTHORITY\SELF”) -and ($_.User -notlike "S-1-5*")} | FT user,identity,IsInherited –a

Voir les statistiques des appareils ActiveSync d’un utilisateur :

Get-ActiveSyncDevice –mailbox login-bal | Get-ActiveSyncDeviceStatistics | Fl DeviceModel,DeviceType,FirstSyncTime,LastSyncAttemptTime,LastSuccessSync

Voir les BAL déconnectées d’un serveur :

Get-MailboxDatabase EXC-MDB-001 | Get-MailboxStatistics  | Where { $_.DisconnectDate -ne $null } | Select DisplayName,MailboxGuid,Database,DisconnectDate,DisconnectReason

Obtenir le top 5 de toutes les files d’attentes de vos HUB :

Get-TransportServer SRV-EXCH-HUB-0* | Get-Queue | Sort MessageCount -desc  | Select QueueIdentity,NextHopDomain,MessageCount,LastError -First 5

Voir les rôles Exchange d’un utilisateur :

Get-ManagementRoleAssignment -GetEffectiveUsers | ?{$_.EffectiveUserName -eq "Amaury AUSSIERE"} | Select Role

Voir d’un coup d’œil l’état de migration d’une liste d’utilisateurs d’un fichier CSV :

Import-Csv D:\MBXtoQuarantaine.csv -Delimiter ";" | %{Get-MoveRequestStatistics $_.samaccountname} | Group status | Select name,count

Obtenir la taille de plusieurs BAL (exemple : BAL de journalisation) avec un avertissement si dépassement d’un seuil :

Get-Mailbox BAL-Journalisation_* | Sort name | Get-MailboxStatistics | Select-Object DisplayName,@{Name="TotalSize(MB)"; Expression={$_.TotalItemSize.Value.tomb()}},@{Name="Warning?"; Expression={if($_.TotalItemSize.Value.tomb() -gt 500){"Warning!"}}}| ft –a

Vérifier les différentes URL d’un serveur CAS :

$monserveur = “SRV-EXCH-CAS-001”
Get-ClientAccessServer $monserveur | Get-ActiveSyncVirtualDirectory | fl server,*lur*
Get-ClientAccessServer $monserveur | Get-ClientAccessServer | fl server,*lur*
Get-ClientAccessServer $monserveur | Get-EcpVirtualDirectory | fl server,*lur*
Get-ClientAccessServer $monserveur | Get-OabVirtualDirectory | fl server,*lur*
Get-ClientAccessServer $monserveur | Get-OwaVirtualDirectory | fl server,*lur*
Get-ClientAccessServer $monserveur | Get-WebServicesVirtualDirectory | fl server,*lur*
Get-ClientAccessServer $monserveur | Get-AutodiscoverVirtualDirectory | fl server,*lur*

Vérifier les interfaces réseaux utilisées pour les réplications au travers d’un DAG :

Get-MailboxDatabase EXC-MDB-001 | Sort name | Get-MailboxDatabaseCopyStatus -ConnectionStatus | Select Name,MailboxServer,DatabaseName,OutgoingConnections,IncomingLogCopyingNetwork | Sort MailboxServer,DatabaseName

Conclusion

Au travers de ces quelques commandes Powershell, vous obtiendrez des informations pertinentes et rapidement sur l’état des serveurs Exchange.

Libre à vous de les adapter suivant vos besoins et votre environnement, le but étant de vous donner des idées pour votre administration au quotidien ou pour vos scripts.

Ajouter un commentaire

Loading