Я пишу установщик PowerShell 3.0 для наших веб-приложений и веб-служб, и меня сбивают с толку при попытке установить учетные данные физического пути.
Мой код выглядит так:
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>> Path credentials
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# Set the physical path credentials of the web application (on Basic Settings screen) to Connect As...
$filter="/system.applicationHost/sites/site[@name='{0}' and @id='1']/application[@path='/{1}']/VirtualDirectory[@path='/']" -f $script:WebSiteName,$appName
Set-WebConfiguration $filter -Value @{userName="$physicalPathCredentialUserID";password="$physicalPathCredentialPassword"}
При выполнении я получаю сообщение об ошибке в PowerShell: «Этот раздел конфигурации нельзя использовать по этому пути. Это происходит, когда раздел заблокирован на родительском уровне». Я попробовал теги PSPath и location, которые работают, когда разделы аутентификации заблокированы, но, похоже, они не имеют никакого эффекта. Я думал, что, возможно, опция -Force сработает, но, хотя ошибок не было, учетные данные физического пути, похоже, не принимались.
Без параметра -Force возникает ошибка, но PowerShell обрезает сообщение, поэтому я не могу точно сказать, на какой раздел он жалуется или какой родительский уровень заблокирован. Я должен предположить, что это раздел «Сайты», так как я пытаюсь настроить: /configuration/system.applicationHost/sites/application/virtualDirectory
Я немного запутался в разнице между разблокировкой и разрешением переопределения, чтобы сохранить значения. PowerShell WebAdministration довольно запутан в этой области. Я не знаю, почему это должно быть так запутанно, чтобы установить значения, которые являются следствием того, что можно установить в пользовательском интерфейсе администрирования IIS. Некоторые значения используют Set-WebConfiguration с уродливой строкой, как показано выше, другие используют Set-WebConfigurationProperty. Если блокировка является известной проблемой, почему разблокировка не документирована лучше?
Я не хочу разблокировать все сайты или все приложения. Я просто хочу разблокировать то, что мне нужно, чтобы установить значения конфигурации для каждого веб-приложения, которое я устанавливаю на веб-сайте по умолчанию.
Каково окончательное решение для разблокировки или переопределения разделов конфигурации в версии 2014 и PowerShell 3.0? И какие настройки принимают PSPath и местоположение?
Кстати, я пробовал варианты следующего:
$filter="/system.applicationHost/sites/site[@name='{0}' and @id='1']/application[@path='/{1}']/VirtualDirectory[@path='/']" -f $script:WebSiteName,$appName
Set-WebConfiguration $filter machine/webroot/appHost -metadata overrideMode -value Allow
но продолжал получать сообщение о заблокированном разделе, пока фильтр не был отключен до уровня сайтов.
Я также попытался установить virtualDirectoryDefaults.userName и virtualDirectoryDefaults.password, которые изначально не использовались, но после IISReset я заметил, что они действительно были добавлены в конец файла applicationHost.config. Я действительно не хочу, чтобы они устанавливались по умолчанию, потому что наши приложения не должны влиять на другие приложения на сервере.
Я ценю любую помощь, которую вы можете предоставить. Я должен что-то упустить, потому что установить эти и другие значения конфигурации веб-приложения не должно быть так сложно.
С уважением