Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.