Программная разблокировка разделов конфигурации IIS в Powershell

Я пишу сценарий PowerShell для создания и настройки ряда веб-сайтов и виртуальных каталогов. Я использую сборку .NET Microsoft.Web.Administration. Я создал новое приложение на веб-сайте по умолчанию и добавил к нему новый виртуальный каталог, и все работает хорошо. Сейчас я пытаюсь настроить параметры аутентификации для виртуального каталога. Я делаю в PowerShell следующее:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")

$oIIS = new-object Microsoft.Web.Administration.ServerManager
$oWebSite = $oIIS.Sites["Default Web Site"]
$oApp = $oWebSite.Applications["/MyApp"]

$oConfig = $oApp.GetWebConfiguration()

$oAnonAuth = $oConfig.GetSection("system.webServer/security/authentication/anonymousAuthentication")
$oAnonAuth.SetAttributeValue("enabled", "False")

Однако команда SetAttributeValue выдает следующую ошибку:

" Этот раздел конфигурации нельзя использовать по этому пути. Это происходит, когда раздел заблокирован на родительском уровне. Блокировка либо по умолчанию (overrideModeDefault = "Deny"), либо явно устанавливается тегом местоположения с overrideMode = "Deny" или устаревшим allowOverride = "false"

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

Спасибо за любую помощь, или устаревшее allowOverride = "false"

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

Спасибо за любую помощь, или устаревшее allowOverride = "false"

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

Спасибо за любую помощь, Ал.


Нашел ответ, который искал, но, будучи новым пользователем, я не могу ответить на свой вопрос в течение 24 часов ..

Я думаю, что нашел приведенный ниже код на этом сайте, но моя машина с тех пор перезагрузился, поэтому я потерял страницу. Однако, похоже, работает следующее:

#
# Allow overriding of the security settings.
#
$oGlobalConfig = $oIIS.GetApplicationHostConfiguration()
$oConfig = $oGlobalConfig.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Default Web Site/mySite")
$oConfig.OverrideMode="Allow"
$oIIS.CommitChanges()

#
# Following the commit above, we need a new instance of the configuration object, which we can now 
# modify.
#
$oGlobalConfig = $oIIS.GetApplicationHostConfiguration()
$oConfig = $oGlobalConfig.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Default Web Site/mySite")
$oConfig.SetAttributeValue("enabled", "False")
$oIIS.CommitChanges()
10
задан Al Henderson 19 April 2011 в 15:34
поделиться