Obtendo seções customizadas do web.config e seus conteúdos no Powershell

1

Eu tenho um aplicativo da Web instalado em c:\inetpub\wwwroot_Site1\AppName , que tem um grupo de seções e seções personalizadas, da seguinte maneira:

<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>

Eu escrevi o seguinte trecho de Powershell:

Import-Module WebAdministration

Get-WebConfiguration //Libraries IIS:\Sites\Site1\AppName

Que retorna corretamente:

Name         Sections                           Groups

====          ========                        ===========

Libraries    Custom.Section.Name

                  Custom.Section.Name2

O que não consigo entender é como, por meio de Get-WebConfiguration ou Get-WebConfigurationProperty , obter acesso aos elementos <add key="x" value="y" /> que são filhos diretos de CustomSectionName no "corpo" real do arquivo de configuração.

    
por Rob 16.11.2011 / 10:13

2 respostas

3

Acontece que recentemente coloquei essa função em uma estrutura da Web do PowerShell que escrevo.

Este é o trio de linhas que você precisa:

Add-Type -AssemblyName System.Web
$webConfigStore = [Web.Configuration.WebConfigurationManager]::OpenWebConfiguration($path)              
$customSetting = $webConfigStore.AppSettings.Settings["$Setting"];   

O terceiro variará um pouco dependendo do que você está tentando conseguir.

Espero que isso ajude

    
por 24.11.2011 / 06:09
0

Se o aplicativo da Web for da variedade do SharePoint 2007, você pode escolher um único appSetting a partir de seu web.config via:

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
    
por 19.03.2013 / 15:40