Мне нужно автоматизировать настройку нового сервера IIS с powershell, и мне нужно изменить параметр делегирования компонента для функции проверки подлинности с помощью форм (ее overrideMode).
В основном я хочу изменить режим overrideMode, видимый при использовании этой команды:
Get-WebConfiguration -Filter //system.web/authentication -PSPath 'MACHINE/WEBROOT/APPHOST' | fl *
Я могу установить его с помощью Set-WebConfiguration для других типов методов аутентификации, например, для аутентификации Windows:
Set-WebConfiguration -Filter //System.webServer/Security/Authentication/windowsAuthentication -PSPath 'MACHINE/WEBROOT/APPHOST' -Metadata overrideMode -Value Allow
Но я не могу сделать то же самое для //system.web/authentication по какой-то причине, и я не понимаю, почему. Когда я пытаюсь, я получаю эту ошибку:
PS H:\> Set-WebConfiguration -Filter //System.web/Authentication -PSPath 'MACHINE/WEBROOT/APPHOST' -Metadata overrideMode -Value Allow
Set-WebConfiguration : Filename: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config
Line number: 974
Error: 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="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".
At line:1 char:1
+ Set-WebConfiguration -Filter //System.web/Authentication -PSPath 'MAC ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Set-WebConfiguration], FileLoadException
+ FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.IIs.PowerShell.Provider.SetConfigurationCommand
Что я делаю не так и как я могу изменить это значение? Есть несколько других делегированных функций, которые тоже кажутся такими же.
Это для IIS 10 на Windows Server 2016
Редактировать: Я заметил, что когда я изменяю настройку делегирования на чтение только с помощью диспетчера IIS (а не Powershell), он «блокирует» функцию, добавляя ее в местоположение с помощью overrideMode = "Deny "в файле applicationHost.config. Как только это будет сделано, я получаю сообщение об ошибке, если пытаюсь изменить его обратно на Разрешить использование Powershell. Это проблема. Если я использую PowerShell только для того, чтобы установить для него значение Разрешить или Запретить, это не выдает ошибку, но это изменение не отражается в диспетчере IIS. Кажется, что для некоторых прав делегирования IIS Manager использует другой метод, чем то, что делает Powershell, чтобы изменить overrideMode, и как только он заблокирован с помощью пользовательского интерфейса, вы не можете разблокировать его с помощью Powershell.