Как установить overrideMode проверки подлинности с помощью форм (system.web / authentication) IIS с powershell? - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужно автоматизировать настройку нового сервера 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.

1 Ответ

0 голосов
/ 28 сентября 2018

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

Ошибка конфигурации: этот раздел конфигурации нельзя использовать по этому пути

Можете ли вы установить атрибут файла так, чтобы он был недоступен только для чтения?

# You may need to use the -Credential parameter for this to work on a remote machine
Set-ItemProperty \\?\C:\Windows\system32\inetsrv\config\applicationHost.config -name IsReadOnly -value $false

Затем попробуйте еще раз выполнить команду Set-WebConfiguration.

Вы также можете попытаться загрузить этот файл конфигурации в PowerShell как XML, а затем изменить атрибут overrideMode и сохранить его обратно в путь IIS.

[xml]$XmlDoc = Get-Content -Path '\\?\C:\Windows\system32\inetsrv\config\applicationHost.config'
# '//System.Web/Authentication' is the XPath provided above
$AuthNode = $XMLdoc.SelectSingleNode('//System.Web/Authentication')
$AuthNode.overrideMode = "Allow"
$XmlDoc.Save("\\?\C:\Windows\system32\inetsrv\config\applicationHost.config")

Я нена этом компьютере есть настройка IIS, но при условии, что это допустимый XPATH в XML, вы должны иметь возможность изменить флаг, как при условии, что при попытке его обновления ничто не использует файл.

...