
У меня установлено веб-приложение, в c:\inetpub\wwwroot_Site1\AppName
котором есть настраиваемая группа разделов и раздел следующим образом:
<configSections>
<sectionGroup name="Libraries">
<section name="Custom.Section.Name" type="System.Configuration.NameValueSectionHandler,system, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"/>
<section name="Custom.Section.Name2" type="System.Configuration.NameValueSectionHandler,system, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"/>
</sectionGroup>
</configSections>
Я написал следующий фрагмент Powershell:
Import-Module WebAdministration
Get-WebConfiguration //Libraries IIS:\Sites\Site1\AppName
Что правильно возвращает:
Название Разделы Группы
==== ========= ===========
Библиотеки Пользовательский.Раздел.Имя
Пользовательский.Раздел.Имя2
Чего я не могу понять, так это как Get-WebConfiguration
получить Get-WebConfigurationProperty
доступ к <add key="x" value="y" />
элементам, которые являются прямыми дочерними элементами CustomSectionName в самом «теле» файла конфигурации.
решение1
Так уж получилось, что недавно я добавил эту функцию в веб-фреймворк PowerShell, который я пишу.
Вот три линии, которые вам понадобятся:
Add-Type -AssemblyName System.Web
$webConfigStore = [Web.Configuration.WebConfigurationManager]::OpenWebConfiguration($path)
$customSetting = $webConfigStore.AppSettings.Settings["$Setting"];
Третий вариант будет несколько отличаться в зависимости от того, что вы пытаетесь получить.
Надеюсь это поможет
решение2
Если веб-приложение относится к типу SharePoint 2007, вы можете выбрать один appSetting из его web.config с помощью:
param ( [string] $url='http://contso.com')
[System.Reflection.Assembly]::LoadWithPartialName('System.Web') | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SharePoint') | Out-Null
[Microsoft.SharePoint.SPSite] $site = New-Object -TypeName 'Microsoft.SharePoint.SPSite' -ArgumentList $url
[System.Configuration.Configuration] $config = [System.Web.Configuration.WebConfigurationManager]::OpenWebConfiguration('/', $site.WebApplication.Name)
<p># pull the one appSetting string we're interested in
[string] $appSettingKey = 'avalidkey'
[string] $appSettingValue = $config.AppSettings.Settings[$appSettingKey].Value
Write-Host ("<appSetting> Key={0}, Value={1}" -f $appSettingKey, $appSettingValue)
$config = $null
$site.Dispose()
$site = $null