Condividi tramite


Snap-in di PowerShell: Attività di configurazione avanzate

di Thomas Deml

In questa procedura dettagliata si apprenderà come eseguire alcune attività di configurazione avanzate usando query XPath e caratteri jolly.

Introduzione

La procedura dettagliata precedente ha illustrato i cmdlet *-WebConfiguration e *-WebConfigurationProperty. Ci sono più cmdlet che incontra l'occhio. Il parametro -filter non è solo un modo per specificare una sezione di configurazione. Si tratta di una query XPath e in questa procedura dettagliata verrà illustrato come sfruttarlo. Esistono anche alcuni modi interessanti per usare wilcard con i comandi *-WebConfiguration*.

Questa procedura dettagliata usa siti, applicazioni e directory virtuali creati negli esempi precedenti.

Uso di query XPath

Ecco un esempio semplice che illustra come usare wilcard con il cmdlet Get-WebConfigurationProperty:

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

E un altro. In questo caso, tutti i mapping dei gestori che verranno eseguiti da 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

Si supponga di non volere l'estensione aspx per i file ASP.Net troppo e si desidera modificare tutti i mapping dei gestori IIS da *.aspx a *.mspx. Può essere più breve di questo?

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

Si esaminerà ora se le modifiche sono state impostate:

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

Ora come esaminare il file di configurazione stesso. È possibile usare il cmdlet get-item esaminato in una procedura dettagliata precedente.

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>

È possibile notare che il sistema di configurazione ha rimosso i gestori precedenti e li ha sostituiti con nuovi gestori ora mappati a *.mspx.

Individuazione della configurazione di IIS

È molto utile se si sa cosa si vuole configurare. Ma cosa succede se non lo fai. Ecco alcuni helper.

Visualizzazione delle sezioni di configurazione di IIS disponibili

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

Visualizzazione delle proprietà che è possibile configurare in una sezione specifica:

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

Mettere insieme i due elementi, ovvero visualizzare tutte le sezioni con le relative proprietà.

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

Questi comandi verranno probabilmente inseriti in alcune funzioni in un'anteprima tecnica successiva, ma questo è ciò che si ottiene per il momento :).

Riepilogo

In questa procedura dettagliata si è appreso come eseguire attività di configurazione IIS complesse usando caratteri jolly e query XPath. La procedura dettagliata successiva illustra come individuare lo stato e i dati di runtime.