Bonjour,J'ai récemment eu l'occasion de devoir me former au fonctionnement de Powershell pour installer et configurer IIS. Je vous livre ici une aide succincte pour vous faciliter la prise en main de Powershell avec IIS 7.5.J'ai suivi cette excellente suite d'articles du site learn.iis.net pour m'initier : http://learn.iis.net/page.aspx/447/managing-iis-with-the-iis-powershell-snap-in/
Cependant, cet ensemble d'articles a été réalisé pour Windows 2008 et non pour Windows 2008 R2. Quelques subtilités sont alors à prendre en compte pour bien démarrer.Remarque : Toutes les étapes mentionnées doivent être effectuées avec une console Powershell exécutée en tant qu'administrateur.
Comment installer IIS ?
Cet article Technet détaille très bien les étapes à suivre :http://technet.microsoft.com/en-us/library/cc732263.aspx#BKMK_powershell
En voici un rapide résumé : La première chose à faire est d'importer le module Servermanager afin de pouvoir gérer les rôles (Il s'agit de l'équivalent en ligne de commande de l'interface graphique "Server Manager") :
Import-Module Servermanager
Une fois ce module importé, les deux commandes les plus utilisées sont :
Pour effectuer l'installation par défaut de IIS, il suffit de taper la commande suivante :
Add-WindowsFeature Web-Server -restart
Et si vous voulez ajouter d'autres services de rôle comme ASP.NET par exemple, il suffit de lister tout ce que vous voulez installer en séparant chaque service de rôle ou feature par une virgule :
Add-WindowsFeature Web-Server,Web-Asp-Net
Comment gérer son IIS ?
Comme pour avoir accès à la fonctionnalité Servermanager, il faut importer un module pour pouvoir gérer son serveur IIS. C'est ici qu'il y a une différence importante avec l'article du site learn.iis.net. En effet, en 2008 R2, il n'y a pas besoin d'installer un snap-in comme en Windows 2008.
Remarque : Avant d'importer le module, il faut changer l'"ExecutionPolicy" afin de permettre au module de s'exécuter correctement :
Set-ExecutionPolicy RemoteSigned
Procédons à l'importation du module :
ImportSystemModules
Afin de vérifier si le module est bien chargé, vous pouvez exécuter la commande suivante :
Get-PSProviderVous devriez voir la ligne suivante apparaitre au milieu de différents modules :
Name Capabilities Drives---- ------------ ------WebAdministration ShouldProcess {IIS}
Mettons-nous dans le contexte du module IIS afin d'avoir accès aux fonctionnalités de configuration :
Set-Location IIS:
Pour savoir ce que vous pouvez faire avec ce module, vous pouvez taper la commande suivante :
Get-Command -Module webadministration
Ou vous baser sur cet article technet :
http://technet.microsoft.com/en-us/library/ee790599.aspx
Et pour en savoir plus sur une commande spécifique (en l'occurrence New-Website qui permet de créer un nouveau site web) :
Get-Help New-Website
Parfois, cette simple aide n'est pas suffisante pour savoir comment utiliser correctement la commande. Vous pouvez alors ajouter à la fin de la requête -examples pour afficher quelques exemples d'utilisation ou -detailed pour mieux connaître les paramètres utilisables ou -full pour tout avoir d'un coup.
Get-Help New-Website -ExamplesGet-Help New-Website -DetailedGet-Help New-Website -Full
L'exemple donné pour New-Website est le suivant :
New-WebSite -Name TestSite -Port 80 -HostHeader TestSite -PhysicalPath "$env:systemdrive\inetpub\testsite"
En affichant l'aide détaillée on obtiendra les informations suivantes sur les différentes options utilisées :
-Name <String> The name of the new site to create.
-Port <UInt32> The port to use for the new site.
-HostHeader <String> The host header to use for the new site.
-PhysicalPath <String> The physical path to use for the new site. The folder specified must already exist.
Ce qui veut dire que nous allons créer un site nommé "TestSite" sur le port "80" dont le HostHeader est "TestSite" et dont le chemin physique est "%SytstemDrive%\inetpub\testsite"
Pour les changements de configuration, le site learn.iis.net fourni deux articles très complets :
Grâce à ces deux articles, en n'ayant aucune connaissance sur Powershell, j'ai réussi à modifier la configuration de mes sites. Le plus difficile ici est de trouver le nom de la section que l'on souhaite modifier.
Voici deux astuces pour se simplifier la vie :
Voici un exemple concret avec la désactivation du defaultDocument pour le Default Web Site :
La commande appcmd.exe est la suivante :Appcmd.exe set config "Default Web Site" /section:system.webServer/defaultDocument /enabled:false
La commande powershell est la suivante :Set-WebConfigurationProperty -filter /system.webServer/defaultDocument -name enabled -value false -PSPath 'IIS:\Sites\Default Web Site'
La section concernée est : /system.webServer/defaultDocument. Cela montre bien que peu importe le type de script utilisé entre Powershell et Appcmd, la section est la même pour les deux.
En espérant que cet article vous soit utile.Sylvain Lecerf & L'équipe de Support IIS Microsoft France