Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

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.

Equilibrage des BAL sur les bases Exchange

Contexte

Dans un environnement de production avec Exchange, il peut arriver que l’ensemble des boites aux lettres utilisateurs ne soient pas bien réparties sur l’ensemble des bases. Afin d’éviter tout déséquilibre, il convient de rééquilibrer les bases. Mais ce travaille peut s’avérer fastidieux et long suivant votre organisation.

Je vais donc partager ici la solution mise en œuvre chez un client pour corriger cela très simplement.

Solution

Voici comment le script fonctionne pour répartir les BAL sur l’ensemble des bases :

  1. Récupération de toutes les BAL stockées sur les bases à répartir
  2. Calcul du nombre moyen de BAL par base
  3. Classement des bases suivant le nombre de BAL actuel
  4. Répartition des BAL suivant cette règle : Si le nombre de BAL dans une base est supérieur à la moyenne calculée, alors déplacement des BAL dans une base sous allouée, jusqu’à obtenir l’équilibre dans cette base. Cette règle est appliquée pour chaque base au dessus de la moyenne.
  5. A la fin du script, un fichier script PowerShell est généré avec les commandes New-MoveRequest qui vont bien.
  6. Il ne reste plus qu’a lancer ce script pour obtenir un équilibrage parfait.

 

Script

Le script ci dessous utilise le fichier “Source-DBBalanceScript.txt” qui doit être disponible dans le même dossier que le script. Voici le contenu de ce fichier :

Identity
EXCH-MBX-DAG1-DB01
EXCH-MBX-DAG1-DB02
EXCH-MBX-DAG1-DB03
EXCH-MBX-DAG1-DB04

A vous de mettre dans ce fichier les bases que vous voulez équilibrer. Les bases qui ne sont pas mises dans ce fichier, ne seront pas traités. Idéal si vous avez une ou deux bases de tests qui ne doivent pas être utiliser en production.

Conclusion

Avec ce script, l’ensemble de vos bases sont correctement réparties afin de corriger les dérives.

Attention, ce script ne prend en compte que le nombre de BAL par base Exchange. La volumétrie des BAL n’entre pas en compte dans le calcul de l’équilibrage. Il s’agit là d’un équilibrage sur le nombre de BAL et pas sur le volume.

Obtenir des statistiques sur les appareils ActiveSync connectés à votre serveur Exchange

Contexte

Si vous ne disposez pas de logiciel de reporting pour votre infrastructure Exchange et que vous n’avez pas spécialement changer les paramètres de base pour ActiveSync, sachez que chaque utilisateur peut synchroniser jusqu’a 10 appareils en même temps.

Suivant votre infrastructure, cela peut poser certains problèmes de performances ou de sécurité si ce protocole n’a pas été prise en compte lors du déploiement et que vous avez publié ActiveSync par la suite.

Script

Voici comment obtenir la liste de tous les périphériques enregistrés pour chaque compte utilisateur. Vous obtiendrez par exemple les modèles, date de synchronisation, etc., pour chaque appareil. Tout ce qu’il faut pour faire des statistiques avec votre tableur préféré.

Conclusion

Grâce à ce script, vous allez pouvoir obtenir l’ensemble des informations nécessaire pour connaitre tous les appareils ayant accès à vos serveurs Exchange.

Au vue des résultats de ce script, vous aurez probablement des questions sur les usages et performances ActiveSync sur vos serveurs. N’hésitez pas à nous contacter, nous pouvons vous aider à définir des stratégies et/ou revoir votre infrastructure dans le cadre d’une mode très tendance, je parle du BYOD !