Оснастка PowerShell: расширенные задачи настройки
В этом пошаговом руководстве вы узнаете, как выполнять некоторые расширенные задачи настройки с помощью запросов 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. В следующем пошаговом руководстве рассматривается обнаружение данных о состоянии и времени выполнения.