Iis

在 Powershell 中獲取自定義 web.config 部分及其內容

  • June 10, 2014

我安裝了一個 Web 應用程序,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

哪個正確返回:

命名部分組

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

庫 Custom.Section.Name

                  Custom.Section.Name2

我無法理解的是如何通過Get-WebConfigurationGet-WebConfigurationProperty獲取<add key="x" value="y" />對配置文件實際“正文”中 CustomSectionName 的直接子元素的訪問。

碰巧我最近將此函式放入了我編寫的 PowerShell Web 框架中。

這是您需要的三行:

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

第三個會有所不同,具體取決於您要獲得的內容。

希望這可以幫助

如果 Web 應用程序屬於 SharePoint 2007 種類,您可以通過以下方式從其 web.config 中選擇一個 appSetting:

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

引用自:https://serverfault.com/questions/331436