IIS 7.5 & Powershell sous Windows 2008 R2
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 : https://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 :
https://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 :
- Get-WindowsFeature : Permet de lister les rôles et les features présents sur le serveur (installés ou non)
- Add-WindowsFeature name -restart : Permet d'ajouter le rôle ou la feature dont le nom est "name". Le paramètre -restart n'est pas obligatoire mais s'il est renseigné un redémarrage du serveur sera effectué à la fin de l'installation.
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-PSProvider
Vous 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 :
https://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 -Examples
Get-Help New-Website -Detailed
Get-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 :
- https://learn.iis.net/page.aspx/436/powershell-snap-in-changing-simple-settings-in-configuration-sections/
- https://learn.iis.net/page.aspx/437/powershell-snap-in-advanced-configuration-tasks/
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 :
La plupart des modifications que vous souhaitez faire ont déjà été faites par d'autres soit via Powershell soit via Appcmd.exe (l'outil en ligne de commande pour gérer IIS sans utiliser Powershell).
Il vous suffira donc de faire une recherche sur la modification que vous souhaitez réaliser et vous trouverez directement comment faire en Powershell, ou vous pourrez récupérer la section à modifier via un exemple de script Appcmd.exe.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:falseLa 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.
Utiliser l'outil "Configuration Editor" intégré à IIS pour trouver directement la section que vous souhaitez modifier.
Trois liens pour vous y aider :
https://learn.iis.net/page.aspx/401/using-the-administration-pack-for-iis-70/
https://learn.iis.net/page.aspx/418/editing-collections-with-configuration-editor/
https://learn.iis.net/page.aspx/419/editing-collections-using-configuration-editor-complex-sections/
En espérant que cet article vous soit utile.
Sylvain Lecerf & L'équipe de Support IIS Microsoft France