Share via


Snap-in do PowerShell: tarefas de configuração avançada

por Thomas Deml

Este artigo contém etapas para realizar algumas tarefas de configuração avançada usando caracteres curinga e consultas XPath.

Introdução

No artigo anterior, você conheceu os cmdlets *-WebConfiguration e *-WebConfigurationProperty. Esses cmdlets são mais interessantes do que você imagina. O parâmetro -filter não é somente uma forma de especificar uma seção de configuração. Ele consiste em uma consulta XPath. Neste artigo, você aprende a aproveitar esse recurso. Também há algumas maneiras interessantes de usar curingas com os comandos *-WebConfiguration*.

Este artigo usa sites, aplicativos e diretórios virtuais criados em exemplos anteriores.

Usando consultas XPath

Confira um exemplo simples que mostra como usar curingas com o cmdlet Get-WebConfigurationProperty:

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

Confira abaixo mais um exemplo. Nele, é possível notar todos os mapeamentos de manipulador que serão executados por 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

Imagine que você não pretende usar a extensão .aspx para seus arquivos ASP.NET e deseja alterar todos os mapeamentos de manipulador do IIS de *.aspx para *.mspx. É possível ser menor do que abaixo?

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

Hora de conferir se as alterações foram definidas:

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

Agora, é uma boa ideia conferir o próprio arquivo de configuração. Para isso, é possível usar o cmdlet get-item, que foi analisado em um artigo anterior.

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>

Observe que o sistema de configuração removeu os manipuladores antigos e os substituiu por novos que agora são mapeados para *.mspx.

Como descobrir a configuração do IIS

É ótimo saber o que você deseja configurar. Mas e se você não souber? Confira algumas coisas que podem ajudar.

Como mostrar as seções de configuração do IIS disponíveis

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

Como mostrar as propriedades que você pode configurar em uma seção específica:

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

A junção dos dois acima, ou seja, como mostrar todas as seções e as respectivas propriedades.

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

No momento, essas são coisas que podem ajudar você, mas temos a intenção de incluir esses comandos em algumas funções em uma versão prévia técnica futura.

Resumo

Neste artigo, você conferiu etapas para realizar tarefas complexas de configuração do IIS usando caracteres curinga e consultas XPath. O próximo artigo discutirá como descobrir dados de estado e de runtime.