Abrufen benutzerdefinierter web.config-Abschnitte und deren Inhalte in Powershell

Abrufen benutzerdefinierter web.config-Abschnitte und deren Inhalte in Powershell

Ich habe eine Webanwendung installiert, c:\inetpub\wwwroot_Site1\AppNamedie eine benutzerdefinierte Abschnittsgruppe und einen Abschnitt wie folgt hat:

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

Ich habe den folgenden Powershell-Ausschnitt geschrieben:

Import-Module WebAdministration

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

Das gibt korrekt zurück:

Name Abschnitte Gruppen

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

Bibliotheken Custom.Section.Name

                  Benutzerdefinierter.Abschnitt.Name2

Was ich nicht verstehe, ist, wie ich über diese Elemente, die direkte untergeordnete Elemente von CustomSectionName sind, im eigentlichen „Hauptteil“ der Konfigurationsdatei Zugriff darauf erhalten Get-WebConfigurationoder erlangen kann.Get-WebConfigurationProperty<add key="x" value="y" />

Antwort1

Zufällig habe ich diese Funktion vor Kurzem in ein PowerShell-Web-Framework eingefügt, das ich schreibe.

Hier ist das Trio an Zeilen, das Sie benötigen:

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

Der dritte Punkt hängt etwas davon ab, was Sie erreichen möchten.

Hoffe das hilft

Antwort2

Wenn es sich bei der Webanwendung um eine SharePoint 2007-Anwendung handelt, können Sie ein einzelnes AppSetting aus der Datei web.config wie folgt abrufen:

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

verwandte Informationen