Поделиться через


Оснастка PowerShell: расширенные задачи настройки

Томас Демль (Thomas Deml)

В этом пошаговом руководстве вы узнаете, как выполнять некоторые расширенные задачи настройки с помощью запросов XPath и подстановочных знаков.

Введение

В предыдущем пошаговом руководстве представлены командлеты *-WebConfiguration и *-WebConfigurationProperty. Эти командлеты не только отвечают глазу. Параметр -filter — это не просто способ указать раздел конфигурации. Это запрос XPath, и в этом пошаговом руководстве мы рассмотрим, как использовать его. Есть также несколько хороших способов использования wilcards с командами *-WebConfiguration*.

В этом пошаговом руководстве используются сайты, приложения и виртуальные каталоги, созданные в предыдущих примерах.

Использование запросов XPath

Ниже приведен простой пример использования wilcards с командлетом Get-WebConfigurationProperty:

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

И еще один. Здесь все сопоставления обработчиков, которые будут выполняться 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

Предположим, вам не нравится расширение ASPX для ASP.Net файлов и вы хотите изменить все сопоставления обработчиков IIS с *.aspx на *.mspx. Может ли он быть короче этого?

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

Давайте посмотрим, были ли установлены изменения:

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

Теперь как насчет просмотра самого файла конфигурации. Мы можем использовать командлет get-item, который мы рассмотрели в предыдущем пошаговом руководстве.

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>

Вы видите, что система конфигурации удалила старые обработчики и заменила их новыми обработчиками, которые теперь сопоставлены с *.mspx.

Обнаружение конфигурации IIS

Это здорово, если вы знаете, что вы хотите настроить. Но что делать, если вы этого не делаете. Вот несколько помощников.

Отображение доступных разделов конфигурации IIS

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

Отображение свойств, которые можно настроить в определенном разделе:

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

Объединение двух разделов, т. е. отображение всех разделов со свойствами.

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

Мы, вероятно, упакуем эти команды в некоторые функции в более поздней версии Tech Preview, но это то, что вы получите на данный момент :).

Итоги

В этом пошаговом руководстве вы узнали, как выполнять сложные задачи настройки IIS с помощью подстановочных знаков и запросов XPath. В следующем пошаговом руководстве рассматривается обнаружение данных о состоянии и времени выполнения.