Share via


Composant logiciel enfichable PowerShell : tâches de configuration avancées

par Thomas Deml

Dans ce guide, vous apprenez à effectuer des tâches de configuration avancées à l’aide de requêtes XPath et de caractères génériques.

Introduction

Le guide précédent vous a présenté les cmdlets *-WebConfiguration et *-WebConfigurationProperty. Mais ces cmdlets sont plus complexes qu’il n’y paraît. Le paramètre -filter n’est pas simplement un moyen de spécifier une section de configuration. Il s’agit d’une requête XPath et ce guide permet de découvrir comment en tirer profit. Vous pouvez également utiliser des caractères génériques de manière intéressante avec les commandes *-WebConfiguration*.

Ce guide utilise les sites, applications et répertoires virtuels créés dans les exemples précédents.

Utilisation de requêtes XPath

Voici un exemple simple qui vous montre comment utiliser des caractères génériques avec la cmdlet Get-WebConfigurationProperty :

PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter //defaultDocument/files -name Collection[value="index*"] | select value

En voici un autre. Ici, tous les mappages de gestionnaires qui seront exécutés par ASPNET_ISAPI.DLL :

PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter //handlers -name Collection[scriptProcessor="*aspnet_isapi.dll"]  | select name,path
name                                              path
----                                              ----
svc-ISAPI-2.0-64                                  *.svc
svc-ISAPI-2.0                                     *.svc
AXD-ISAPI-2.0                                     *.axd
PageHandlerFactory-ISAPI-2.0                      *.mspx
SimpleHandlerFactory-ISAPI-2.0                    *.ashx
WebServiceHandlerFactory-ISAPI-2.0                *.asmx
HttpRemotingHandlerFactory-rem-ISAPI-2.0          *.rem
HttpRemotingHandlerFactory-soap-ISAPI-2.0         *.soap
AXD-ISAPI-2.0-64                                  *.axd
PageHandlerFactory-ISAPI-2.0-64                   *.mspx
SimpleHandlerFactory-ISAPI-2.0-64                 *.ashx
WebServiceHandlerFactory-ISAPI-2.0-64             *.asmx
HttpRemotingHandlerFactory-rem-ISAPI-2.0-64       *.rem
HttpRemotingHandlerFactory-soap-ISAPI-2.0-64      *.soap

Supposons que vous n’êtes pas particulièrement satisfait de l’extension .aspx pour vos fichiers ASP.Net et que vous souhaitez modifier tous les mappages de gestionnaires IIS de *.aspx à *.mspx. Peut-on faire plus court ?

PS IIS:\Sites\DemoSite\DemoApp> set-webconfiguration "/system.webServer/handlers/add[@path='*.aspx']/@path" -value "*.mspx"

Voyons si les modifications ont été définies :

(get-webconfiguration //handlers).collection | select name,path

Examinons maintenant le fichier de configuration lui-même. Nous pouvons utiliser la cmdlet get-item que nous avons découverte dans un guide précédent.

PS IIS:\Sites\DemoSite\DemoApp> get-content (((get-item .).physicalPath).ToString() + "\web.config")
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
         <handlers>
            <remove name="PageHandlerFactory-ISAPI-2.0-64" />
            <remove name="PageHandlerFactory-ISAPI-2.0" />
            <remove name="PageHandlerFactory-Integrated" />
            <add name="PageHandlerFactory-Integrated" path="*.mspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
            <add name="PageHandlerFactory-ISAPI-2.0" path="*.mspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
            <add name="PageHandlerFactory-ISAPI-2.0-64" path="*.mspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
        </handlers>
    </system.webServer>
</configuration>

Vous pouvez constater que le système de configuration a supprimé les anciens gestionnaires et les a remplacés par de nouveaux gestionnaires qui sont désormais mappés sur *.mspx.

Découverte de la configuration d'IIS

Elle est géniale si vous savez ce que vous souhaitez configurer. Et si ce n’était pas le cas ? Voici quelques applications d’assistance.

Affichage des sections de configuration IIS disponibles

get-webconfiguration //* | where {$_.psbase.SectionPath -like "*" -and $_.psbase.SectionPath.length -gt 0} | select SectionPath

Affichage des propriétés que vous pouvez configurer dans une section particulière :

get-webconfiguration system.webServer/caching | select -exp Attributes | select Name

Leur conjugaison, c’est-à-dire l’affichage de toutes les sections et leurs propriétés.

get-webconfiguration //* | where {$_.psbase.SectionPath -like "*" -and $_.psbase.SectionPath.length -gt 0} | foreach {$_.SectionPath.ToUpper();get-webconfiguration $_.SectionPath | select -exp Attributes | select Name;"`n"} | more

Nous allons probablement intégrer ces commandes à certaines fonctions lors d’une Préversion technique ultérieure, mais voilà ce que vous avez pour l’instant :).

Résumé

Dans ce guide, vous avez appris à accomplir des tâches de configuration IIS complexes à l’aide de caractères génériques et de requêtes XPath. Le guide suivant explique comment déceler les données d’état et de runtime.