Оснастка PowerShell: изменение простых параметров в разделах конфигурации

Томас Демл

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

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

Введение

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

Get-WebConfiguration и Get-WebConfigurationProperty

Get-WebConfiguration и Get-WebConfigurationProperty позволяют получать разделы конфигурации IIS. Они очень похожи на Get-Item и Get-ItemProperty. Где Get-Item* работает только с контейнерами пространств имен (Сайты, приложения, AppPools, VDirs) Get-WebConfiguration* будет работать с любым разделом конфигурации IIS.

Запрос параметров конфигурации

Давайте посмотрим, какие параметры для раздела directoryBrowse включены в созданном ранее приложении DemoApp. Сначала мы перейдем к папке DemoApp, а затем запрашиваем параметры проверки подлинности в этой папке. Вот как это сделать:

PS IIS:\> cd IIS:\Sites\DemoSite\DemoApp
PS IIS:\Sites\DemoSite\DemoApp> dir
Type               Name                             Physical Path
----               ----                             -------------
file               Default.htm                      C:\DemoSite\DemoApp\Default.htm
virtualDirectory   DemoVirtualDir2                  C:\DemoSite\DemoVirtualDir2

В следующем примере мы используем параметр -filter, чтобы указать интересующий раздел конфигурации и параметр -name, чтобы указать, какое свойство мы хотим просмотреть. Если вы хотите просмотреть параметры раздела, который не является текущим расположением, можно использовать свойство -PSPath поверх этого. Ниже приведен пример запроса параметров просмотра каталогов на веб-сайте по умолчанию:

Get-WebConfigurationProperty -filter /system.webServer/directoryBrowse -name enabled -PSPath 'IIS:\Sites\Default Web Site'
ItemXPath                   : /system.webServer/directoryBrowse
IsInheritedFromDefaultValue : False
IsProtected                 : False
Name                        : enabled
TypeName                    : System.Boolean
Schema                      : Microsoft.IIs.PowerShell.Framework.ConfigurationAttributeSchema
Value                       : False
IsExtended                  : False

Использование Set-WebConfigurationProperty

Изменение параметра выполняется так же просто, как:

Работа с заблокированными разделами

Вот проблема. Разделы проверки подлинности обычно блокируются, т. е. они не могут быть записаны в файл web.config, но их нужно записать в центральный файл applicationhost.config. При использовании команды, указанной выше, для активации WindowsAuthentication произойдет сбой из-за нарушения блокировки.

PS IIS:\Sites\DemoSite\DemoApp> Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true
Set-WebConfigurationProperty : This configuration section cannot be used at this path. This happens
 when the section is locked at a parent level. Locking is either by default (overrideModeDefault="D
eny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="fa
lse".
At line:1 char:29
+ Set-WebConfigurationProperty  <<<< -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true

Здесь необходимо использовать параметр -PSPath и -location. Следующая команда включает проверку подлинности Windows для приложения DemoApp. Конфигурация записывается в applicationhost.config однако с помощью тега расположения. Щелкните здесь, чтобы найти дополнительные сведения о блокировке и тегах местоположения.

PS IIS:\Sites\DemoSite\DemoApp> Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true -PSPath IIS:\ -location DemoSite/DemoApp

Вам не нужно указывать расположения при запросе конфигурации. Обычная команда Get-WebConfigurationProperty покажет, что параметр включен.

PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled
True

Get-WebConfiguration против Get-WebConfigurationProperty

Это же относится к Get-Item и Get-ItemProperty в предыдущем примере. «Get-WebConfiguration» получает целый раздел вместо только свойства. Это позволяет хранить раздел в переменную, вносить изменения в свойства раздела и сохранять раздел обратно с помощью Set-WebConfiguration. И вы получаете преимущество завершения команды.

Ниже приведен пример. Не просто копируйте и вставляйте. Изучите свойства раздела windowsAuthentication. Тип $winAuth. и нажмите <клавишу TAB>, чтобы просмотреть доступные свойства и функции.

PS IIS:\Sites\DemoSite\DemoApp> $winAuth = Get-WebConfiguration -filter /system.webServer/security/authentication/windowsAuthentication 
PS IIS:\Sites\DemoSite\DemoApp> $winAuth.enabled = $false
PS IIS:\Sites\DemoSite\DemoApp> $winAuth | set-Webconfiguration -filter /system.webServer/security/authentication/windowsAuthentication -PSPath IIS:\ -location "DemoSite/DemoApp"

Add-WebConfiguration

Add-WebConfiguration — это командлет, который вы хотите использовать, если необходимо добавить что-то в коллекцию конфигураций IIS. Обработчики, модули, параметры документа по умолчанию и некоторые другие примеры, в которых службы IIS используют коллекцию для хранения нескольких значений.

Ниже приведен пример добавления нового документа по умолчанию в коллекцию документов DemoApp по умолчанию:

PS IIS:\Sites\DemoSite\DemoApp>Add-WebConfiguration /system.webServer/defaultDocument/files  "IIS:\sites\Default Web Site" -at 0 -value
@{value="new-index.html"}

В примере используется дополнительный параметр -at. Это позволяет указать, где в коллекции нужно добавить новое значение. 0 в начале; -1 указывает конец.

Сводка

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

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