Freigeben über


PowerShell-Snap-In: Erweiterte Konfigurationsaufgaben

von Thomas Deml

In dieser exemplarischen Vorgehensweise erfahren Sie, wie Sie einige erweiterte Konfigurationsaufgaben mithilfe von XPath-Abfragen und -Wildcards ausführen.

Einführung

Die vorherige exemplarische Vorgehensweise führte Sie in die Cmdlets *-WebConfiguration und *-WebConfigurationProperty ein. Es steckt mehr hinter diesen Cmdlets, als es auf den ersten Blick scheint. Der parameter -filter ist nicht nur eine Möglichkeit, einen Konfigurationsabschnitt anzugeben. Es handelt sich um eine XPath-Abfrage, und in dieser exemplarischen Vorgehensweise werden wir untersuchen, wie Sie sie nutzen können. Es gibt auch einige schöne Möglichkeiten, Wilcards mit den Befehlen *-WebConfiguration* zu verwenden.

In dieser exemplarischen Vorgehensweise werden die Websites, Anwendungen und virtuellen Verzeichnisse verwendet, die in früheren Beispielen erstellt wurden.

Verwenden von XPath-Abfragen

Nachfolgend finden Sie ein einfaches Beispiel, das zeigt, wie Sie Wilcards mit dem Cmdlet Get-WebConfigurationProperty verwenden:

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

Und ein anderes. Hier alle Handlerzuordnungen, die von ASPNET_ISAPI.DLL ausgeführt werden:

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

Angenommen, Sie bevorzugen die .aspx-Erweiterung für Ihre ASP.Net-Dateien nicht besonders und möchten alle IIS-Handlerzuordnungen von *.aspx in *.mspx ändern. Kann es kürzer sein als dies?

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

Sehen wir uns an, ob die Änderungen festgelegt wurden:

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

Sehen Sie sich nun die Konfigurationsdatei selbst an. Wir können das get-item-Cmdlet verwenden, das wir in einer vorherigen exemplarischen Vorgehensweise untersucht haben.

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>

Sie können sehen, dass das Konfigurationssystem die alten Handler entfernt und durch neue Handler ersetzt hat, die jetzt *.mspx zugeordnet sind.

Ermitteln der IIS-Konfiguration

Es ist großartig, wenn Sie wissen, was Sie konfigurieren möchten. Aber was ist, wenn Sie es nicht tun? Hier sind einige Helfer.

Anzeigen verfügbarer IIS-Konfigurationsabschnitte

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

Anzeigen der Eigenschaften, die Sie in einem bestimmten Abschnitt konfigurieren können:

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

Zusammensetzen beider, also alle Abschnitte mit ihren Eigenschaften anzeigen.

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

Wir werden diese Befehle wahrscheinlich in späteren "Tech Previews" in einige Funktionen packen, aber das ist, was Sie jetzt erhalten :).

Zusammenfassung

In dieser exemplarischen Vorgehensweise haben Sie erfahren, wie Sie komplexe IIS-Konfigurationsaufgaben mithilfe von Wildcards und XPath-Abfragen ausführen. In der nächsten exemplarischen Vorgehensweise wird erläutert, wie Zustands- und Laufzeitdaten ermittelt werden.