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.

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 !

Suppression de mails via Exchange Web Services

Contexte

Chez un de nos clients il s’est avéré qu’aléatoirement lors de l’envoi d’un mail via le client de messagerie Microsoft Outlook 2007, le mail n’était pas réellement supprimé de la boite d’envoi. En effet, lors d’un envoi de mail classique, Outlook dépose le mail dans le dossier “Boite d’envoi”, puis déplace le message dans le dossier “Eléments envoyés” quand celui ci est bien envoyé par le serveur Exchange. Dans certains cas, le mail n’est plus visible de l’utilisateur mais n’est pas effacé de la boite d’envoi pour autant.

Ce comportement se traduit par une taille de la BAL de l’utilisateur qui ne cesse de croitre alors que celui-ci supprime ou archive ses mails. De plus, des erreurs d’indexation Exchange au niveau de SCOM apparaissait régulièrement sans savoir exactement pourquoi.

Dans le cas de notre client, il a fallu trouver un moyen de détecter et supprimer les mails en boite d’envoi pour l’ensemble des utilisateurs. Cette opération étant fastidieuse est très longue, l’équipe support ou même les administrateurs ne pouvaient la réaliser. Un script a été élaborer a cet effet.

Avertissement

Ce script, bien que simple et efficace, peut poser certaines questions de droits sur la légitimité de son exécution. En effet, dans la loi Française, la boite mail d’un utilisateur est personnel, même en entreprise. Dès lors qu’un administrateur va supprimer des mails dans la boite d’un utilisateur, sa responsabilité peut être engagée. Avant de se lancer dans une telle opération, il convient d’en parler avec son supérieur et le responsable sécurité de votre entreprise. De plus, il convient de vérifier le script plusieurs fois et de bien le comprendre avant de le lancer sur votre organisation. Le script ci-dessous est fourni tel quel, son utilisation est à vos risques et périls.

Solution

Le script suivant va utiliser un compte de service pour se connecter sur l’ensemble des BAL. Attention, ce compte doit avoir tous les droits Exchange, y compris l’impersonation. Pensez à vérifier vos stratégies de throttling EWS qui peuvent vous brider pour ce script.

Ce script fonctionne de la manière suivante. Il va parcourir l’ensemble des BAL de l’organisation, vérifier la présence de mails dans le dossier de la boite d’envoi. S’il trouve des éléments datant de plus de 7 jours, alors il supprime les mails. Pour chaque BAL, il affiche le nom de la BAL dans la console. Si des mails sont détectés et supprimés, le nom est surligné en rouge. De plus, pour tracer toutes les actions, un fichier de log est créer pour savoir exactement ce qui est fait.

Ne pas oublier d’installer le composant “EWS Managed API” en fonction de votre environnement.

Conclusion

Avec ce script, une très grande quantité d’espace disque a été récupérée suite au vidage de ces dossiers pour l’ensemble des BAL. Les performances Exchange se sont elles aussi nettement améliorée et les erreurs sur l’indexation ont disparus.

Gérer plusieurs proxy sur son ordinateur avec Powershell

Contexte

Pour plusieurs raisons, il peut y avoir plusieurs proxy dans l’entreprise. Si vous devez changer de proxy régulièrement, cette opération peut être longue et source d’erreur. J’ai été confronté a ce cas de figure.

Solution

Pour résoudre ce casse tête, j’ai fait ce script, très simple, mais qui permet de changer de proxy très simplement et rapidement.

Grâce a ce script en Powershell, je vais afficher un menu avec les différents proxy que j’ai ajouter au code au préalable. Il ne me reste plus qu’a choisir quel proxy je veux appliquer et en 1 seconde le nouveau proxy est configuré.

Conclusion

Voici comment gérer simplement plusieurs proxy sur son poste de travail. Idéal pour les administrateurs ou développeurs.

Simple et efficace non ?

Vérifier l’installation d’un KB sur plusieurs serveurs

Contexte

Dans certains cas, il faut déployer un patch Microsoft sur plusieurs serveurs. Mais comment savoir simplement et rapidement si le patch est bien installé, surtout si vous ne disposez pas de la solution System Center ?

Tout simplement avec un script Powershell. Voyons comment faire.

Dans mon exemple ci dessous, je veux savoir si un KB est installé sur tous les contrôleurs de domaine de tous les domaines de toute ma forêt Active Directory.

Compatibilité

Tout d’abord, ce script s’appuie sur des cmdlets (Get-Job et Get-Hotfix notamment) qui ne sont disponibles qu’avec Powershell version 2 minimum. Pensez à vérifier votre version de Powershell.

Fonctionnement

Dans un premier temps, il faut passer le paramètre “hotfix” au script.

Lors du lancement du script, voici les étapes :

  1. 1- Vérification de la syntaxe du paramètre. Il doit être au format “KBxxxxxx”.
  2. 2- Récupération de la liste de tous les domaines de la forêt Active Directory.
  3. 3- Interroge Active Directory pour récupérer la liste des contrôleurs de domaines en demandant les membres du groupe 'Domain Controllers' pour chaque domaine.
  4. 4- Récupération des identifiants pour se connecter à tous les DC.
  5. 5- Création des jobs, avec un job par serveur et maximum 15 jobs simultanés (paramètre $MaxThreads ligne 9).
  6. 6- Récupération des résultats des jobs.
  7. 7- Affichage d'un résumé.
  8. 8- Exportation des résultats.

 

Les jobs Powershell sont utilisés ici afin d’augmenter la rapidité d’exécution. Sinon, les serveurs serait interrogés les uns après les autres. Cette solution fonctionne tout aussi bien, mais demande beaucoup de temps. L’intérêt des jobs est de pouvoir lancer plusieurs requêtes en parallèle. Toutefois, attention à la consommation mémoire car il y’a autant de processus Powershell en mémoire, qu’il y’a de jobs.

Script

Utilisation

Il faut sauvegarder le script ci dessus avec le nom “Check_Hotfix_Installation.ps1”. Ensuite il suffit d’appeler le script dans une console Powershell (en Administrateur) comme ceci : “Check_Hotfix_Installation –Hotfix KB2413670

Conclusion

Avec un simple script Powershell et l’utilisation des jobs, on peut vérifier énormément de serveurs et très rapidement. Rien empêche de modifier le script pour déclencher l’installation du hotfix avant la vérification, ou encore de cibler des serveurs plutôt que des contrôleurs de domaine.

Libre à vous d’adapter ce script selon vos besoins !

Comment créer un cloud privé et sécurisé?

Pour créer un espace de stockage dans le cloud, tout le monde à tendance à utiliser OneDrive de Microsoft ou encore Dropbox. Ca fonctionne très bien, ca fait ce qu’on demande : stocker des données dans le cloud de manière à y accéder depuis n’importe quel endroit et depuis n’importe quelle plateforme.

Le gros point noir de ces solutions pour une entreprise, c’est de ne pas maitriser le stockage et la sécurité des données. En effet, qui peut empêcher un utilisateur de déposer des fichiers sensibles sur Dropbox ? **Là j’entends un gros silence…**

Pour répondre à cette problématique, la société Varonis à créer le logiciel DatAnywhere. ce serveur va vous permettre de créer un cloud chez vous et de surcroit, sécurisé.

La solution étant installée chez vous, vous avez la main sur les données, les droits d’accès et la sécurité. Voici comment reprendre le contrôle de vos données qui partent dans le cloud !

Fonctionnalités du produit

Espaces de travail

  • Gestion des version de fichiers
  • Expérience de drag ’n drop pour les postes clients
  • Possibilité de synchroniser des données avec différents appareils et/ou utilisateurs
  • Créer des liens pour le partage de fichiers

Sécurité

  • Toutes les données transitent via la protocole SSL
  • Contrôle des accès, suivi des abus
  • Authentification via Active Directory ou LDAP
  • Possibilité de gérer les dossiers/utilisateurs pouvant synchroniser à distance
  • Gestion des dates d’expiration pour le partage des données

Stockage

  • Possibilité de déployer des serveurs par zone géographique
  • Supporte la mise en cache et la déduplication
  • Stockage sur votre infrastructure existante

Accéder à vos données

Pour accéder a son espace de stockage dans le “cloud”, voici les différents moyens pour y accéder :

    • Windows
    • Mac OS
    • iOS
    • Androïd
    • Interface web

Conclusion

Maintenant vous savez qu’il est possible d’avoir un cloud privé, sécurisé et comment gérer les données qui y sont. Plus d’excuses pour ne pas sécuriser vos données.

Contactez nous pour que nous puissions vous aider à mettre en place la solution qui va vous permettre à reprendre le contrôle de vos données à l’exterieur de votre société.

Exchange 2013 SP1 : Retour du rôle Edge

Introduction

Depuis la sortie d’Exchange 2013, le rôle n’avait pas été porté dans cette nouvelle version d’Exchange. Ce qui oblige les entreprises à faire l’upgrade vers Exchange 2013 en conservant les serveurs Exchange Edge en version 2010. Pour rappel, le rôle Edge est apparu avec Exchange 2007.

Depuis février 2014, Microsoft à publier le SP1 d’Exchange 2013 et réintroduit le rôle Edge ! Vous allez maintenant pouvoir mettre à jour vos infrastructures.

Pour rappel, la principale fonctionnalité du rôle Edge est de protéger votre infrastructure de messagerie des spam et virus grâce aux différents agents présent sur le serveur Edge.

Il faut noter qu’avec la version 2013 d’Exchange, la console Exchange de management telle qu’on la connaissait avec Exchange 2010, n’existe plus. La console est remplacée par le portail web ECP. Ce portail n’existe pas sur le serveur Edge. Un serveur Edge 2013 devra donc être administrer uniquement en PowerShell.

Installation

Sur le serveur Edge, quand vous exécutez l’installation, vous pouvez maintenant choisir le rôle Edge. Les outils de gestion s’installent automatiquement ainsi que les prérequis.

image

Installation et configuration

Voici le lien de téléchargement du service pack 1 : http://www.microsoft.com/en-us/download/details.aspx?id=41994.

Une fois que le rôle est installé et le serveur redémarré, vous devez effectuer deux actions : Installer la clé du produit et faire l’abonnement Edge (il est possible de se passer de cette étape)

Installation de la clé produit :

Sur le serveur Edge, dans la console Exchange Management Shell, saisir la cmdlet :

Set-ExchangeServer <NomDuEdge> –ProductKey XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

Pour vérifier l’application de la clé, on peut lancer la cmdlet : Get-ExchangeServer

Créer l’abonnement Edge vers vos serveurs Exchange 2013 :

Sur le serveur Edge, dans la console Exchange Management Shell, saisir la cmdlet :

New-EdgeSubscription -FileName "C:\EdgeSubscriptionInfo.xml"

Sur un serveur Exchange, dans une console Exchange Management Shell, après avoir copié le fichier XML issu du serveur Edge :

New-EdgeSubscription -FileData ([byte[]]$(Get-Content -Path "C:\EdgeSubscriptionInfo.xml" -Encoding Byte -ReadCount 0)) -Site "Default-First-Site"

Maintenant que le serveur Edge est en place, il faut le configurer, voici les principales commandes qui vont vous intéresser :

  • Get-IPBlockListProvidersConfig – Pour spécifier un fournisseur de blacklist
  • Get-SenderFilterConfig – Pour bloquer des expéditeurs
  • Get-RecipientFilterConfig – Bloquer des destinataires
  • Get-ContentFilterConfig – Bloquer du contenu dans les mails

Je vous laisse le soin d’aller voir sur Technet (http://technet.microsoft.com/en-us/library/jj218660(v=exchg.150).aspx) pour savoir comment utiliser ces cmdlets et en découvrir bien d’autres.

Conclusion

Grâce à ce service pack 1 d’Exchange 2013, vous pouvez mettre à jour votre serveur Edge vers la dernière version de manière à avoir un niveau de version homogène.

Nous pouvons vous accompagner dans la mise à jour de votre infrastructure de messagerie Exchange, n’hésitez pas à nous consulter pour un éventuel projet.

Créer une machine virtuelle dans Microsoft Azure

Nous allons voir ici comment créer une machine virtuelle dans le cloud de Microsoft, Azure.

Il est intéressant de migrer vers la plateforme Azure car Microsoft offre beaucoup d’avantages. Notamment pour bénéficier des performances d’un Datacenter sans vous soucier de sa gestion et en ne payant que ce que vous consommez.

Voici les différentes étapes à suivre pour créer une machine virtuelle. Dans mon exemple, je vais créer une VM avec Windows Server 2012 R2.

Création

Dans un premier temps, il faut ouvrir le portail de gestion : https://manage.windowsazure.com/.

Cliquez sur “Nouveau” en bas à gauche :

image Choisissez “Calcul” –> “Machine virtuelle” –> “A partir de la galerie” :

image L’assistant démarre. Choisissez une image Windows Server. Ici vous pouvez choisir la version et l’édition. Cliquez sur suivant en bas à droite.

imageSaisissez le nom de la machine virtuelle, la taille (voir la grille de prix) ainsi que le compte d’administration et le mot de passe. Cliquez sur suivant.

image Choisissez ici le nom DNS public de la machine, l’abonnement associé et l’emplacement de la VM (zone du datacenter Microsoft). Cliquez sur suivant.

image Cliquez sur valider.

image Patientez quelques minutes pendant la création de la VM. Une fois fini vous devez avoir ce message :

image Dans le tableau de bord, on peux voir la VM :

image

Gestion

Pour gérer votre serveur à proprement parler, il faut pouvoir se connecter dessus. Pour cela, plusieurs méthodes nous sont offertes. Avant tout, il faut aller dans les paramètres de la VM de la console Azure, puis configurer les points de terminaison.

image

On voit ici qu’il y’a le RDP et le PowerShell actif par défaut. Il est possible de changer les ports public pour l’administration ainsi que de rajouter d’autres protocoles, tel que SSH, HTTPS, MSSQL, suivant vos besoins.

En RDP

Il suffit d’ouvrir le bureau à distance et de saisir l’adresse du serveur et le port public.image Il faut saisir le compte d’administration renseigné lors de la création de la VM. Attention à bien saisir le login sous la forme NomVM\NomUtilisateur.

image Nous voici connectés au bureau de la VM !

image

En Powershell

Il faut installer les outils Powershell pour Windows Azure (lien : http://go.microsoft.com/fwlink/p/?linkid=320376&clcid=0x409) ensuite ouvrir la console “Windows Azure Powershell”.

Il faut commencer par se connecter a son compte Azure avec la cmdlet “Add-AzureAccount”.

Ensuite, petite subtilité, il faut bien choisir l’abonnement utilisé pour créer la VM, voici un exemple :

image

Il est possible d’obtenir toutes les informations de la VM, de manière identique à un déploiement HyperV sur site, mais avec les particularités Azure (InstanceSize, DNSName,…).

image 

Conclusion

 

Vous pouvez maintenant gérer vos machines virtuelles Azure. Il est aussi possible, bien sûr, de démarrer, arrêter les VM mais aussi en créer: de quoi automatiser vos déploiements.

Exchange 2013 - Ajouter un disclaimer aux emails

Principe

L’ajout d’un disclaimer dans les correspondances électronique est là pour rappeler le caractère confidentiel du contenu de l’email. C’est un rappel de bonne conduite.

Mise en place

Etape 1 : Se connecter au centre d’administration d’Exchange 2013

Exemple d’URL : https://<votre_serveur_Exchange>/ecp

image 

Etape 2 : Cliquer sur “Flux de messagerie” puis “Règles”

image 

Etape 3: Ajouter une règle

Cliquer sur “+” en dessus des règles, choisir “Créer une règle…”.

image

Etape 4: Configurer la règle

Pour le critère “Appliquer cette règle si…”, choisir l’option “Le destinataire se situe…” et choisir “Hors de l’organisation” comme paramètre.

Pour le critère “Procédez comme suit…”, choisir l’option “Ajouter une exclusion de responsabilité…” et tapez le texte que vous voulez ajouter comme disclaimer en cliquant sur “Entrer du texte…” à droite.

Enfin, sélectionner le paramètre “Ignorer” s’il est impossible d’appliquer l’exclusion de responsabilité.

Pour terminer, cliquer sur Terminer.

image

 

Etape 5: Vérifier que la règle est activée

image

Exemple de disclaimer

Ce message contient des informations confidentielles destinées à la personne mentionnée ci-dessus. Si vous n'êtes pas cette personne, vous n'avez pas l'autorisation de révéler ces informations, de les transmettre à qui que ce soit ou d'en faire des copies. Avertissez l'expéditeur immédiatement et détruisez cet e-mail.

Conclusion

De cette manière, vous pouvez ajouter un message de sécurité de façon simple et centralisé. Vous avez aussi la garantie que le message soit appliqué à tous les mails sortant de votre organisation et sans devoir le gérer par les signatures mails de chacun.

Petite information, un mail non chiffré contenant un disclaimer n’a aucune valeur juridique, c’est comme envoyer une carte postale sans enveloppe. Pensez donc à chiffrer vos emails.