Bonjour,
Aujourd’hui nous allons parler un peu de PowerShell et de ce que l’on peut faire avec ! 🙂
Le but ici est d’administrer Exchange 2010 sans installer les outils de management sur la station de travail (disons un pc portable), dans notre exemple nous utiliserons Windows XP pour montrer que tout est possible.
Windows 7 fonctionne aussi parfaitement bien, en fait tout poste possédant PowerShell v2.
Nous allons tout d’abord vérifier les méthodes d’authentification sur la webapp PowerShell dans IIS (sur le serveur exchange qui sera notre cible).
Si authentification windows n’est pas activé il faudra l’activer.
Puis faire un iisreset /noforce pour la prise en compte.
A partir de là tout est prêt pour administrer notre serveur à distance.
Allons sur notre poste Windows XP qui se trouve dans le domaine et lançons PowerShell.
Nous allons commencer par stocker dans la variable $cred les credatials avec des droits de gestion dans exchange (domaine\user).
$cred = Get-Credential
Puis nous ouvrons une session sur le serveur distant en passant par la webapp PowerShell et en utilisant les credentials que nous avons saisis.
$session = New-PSSession –ConfigurationName Microsoft.Exchange –ConnectionUri https://fqdn/powershell -Credential $cred
Attention : le fqdn doit être porté par le certificat SSL utilisé dans IIS (le certificat exchange) s’il n’y est pas un message d’erreur sera retourné.
La session est ouverte
Nous allons maintenant importer la session sur notre machine.
Import-PSSession $session
Les messages d’erreurs sont toujours agressifs 😉
Ici c’est l’execution policy qui n’était pas set sur RemoteSigned ce qui bloquait le bon fonctionnement de l’import.
Set-ExecutionPolicy RemoteSigned
Ici l’import est passé
Nous pouvons maintenant administrer notre serveur Exchange !!
Sauvegardons notre travail pour la prochaine fois.
Export-PSSession –Session $session –OutputModule ExchangeCmdlets –AllowClober
La configuration est exportée sous forme de module dans le répertoire de l’utilisateur qui travaille.
Pour charger le module la prochaine fois.
Get-Module –ListAvailable
Import-Module ExchangeCmdlets
Et vous pouvez de nouveau travailler à distance sur votre configuration exchange 🙂
Maintenant allons un peu plus loin.
La première chose à faire lorsqu’on vérifie son serveur exchange c’est la cmdlet Test-ServiceHelath
Ici mon service MSExchangeTransport du HUB est arrêté il faut le relancer.
Nous sommes à distance et un Start-Service ne fonctionne qu’en local, nous ne pouvons donc pas l’utiliser dans notre cas.
Il nous reste WMI et la class win32_service !
Envoyer de nouveau les credentials qui ont suffisamment de droits dans une variable, disons $cred puis construisons notre command.
(gwmi –ComputerName Exchange2k10 –Credential $cred win32_service –Filter »name=’ MSExchangeTransport' »).InvokeMethod(« StartService »,$null)
Ici je fais appel à une méthode contenue dans la class win32_service qui s’appelle StartService tout en ayant au préalable filtré sur le service qui je souhaite manipuler.
NOTE : pour retrouver rapidement les méthodes contenu dans une class WMI (celle qui sont exposées) vous pouvez utiliser la cmdlet Get-Member.
gwmi –ComputerName Exchange2k10 –Credential $cred win32_service –Filter »name=’ MSExchangeTransport' » | Get-Member
Mon serveur est de nouveau opérationnel 🙂
Si vous avez des questions n’hésitez pas.
Anthony COSTESEQUE.