Iis
在 Powershell 中獲取自定義 web.config 部分及其內容
我安裝了一個 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-WebConfiguration
或Get-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