Functions/PSAppSetting/Get-PSAppSetting.ps1
<# .SYNOPSIS Returns the appSettings from an or application/web config .DESCRIPTION The cmdlet takes an application/web configuration as an input and returns all applicationsettings from it. .PARAMETER ConfigXml Mandatory - Pipeline input for Configuration XML .EXAMPLE Get-PSWebConfig -Path 'C:\inetpub\wwwroot\myapp' | Get-PSAppSetting .EXAMPLE Get-WebSite mysite | Get-PSWebConfig | Get-PSAppSetting #> function Get-PSAppSetting { [CmdletBinding()] param( [Parameter(Mandatory=$true,ValueFromPipeLine=$true)] [psobject[]]$ConfigXml ) process { Write-Verbose "Executing Get-PSAppSetting" foreach ($config in $ConfigXml) { Write-Verbose "Processing configuration '$($config.ComputerName + " " + $config.File)'" if ($config -is [string]) { $config = [xml]$config } if ($config | Get-Member -Name configuration) { if ($config.configuration.appSettings.EncryptedData) { Write-Warning "appSettings section is encrypted. You may not see all relevant entries." Write-Warning "Execute this command as an administrator for automatic decryption." } foreach ($appSetting in $config.configuration.appSettings.add) { $appSetting | Add-Member -NotePropertyName Session -NotePropertyValue $config.Session -Force -PassThru | Add-Member -NotePropertyName ComputerName -NotePropertyValue $config.ComputerName -Force -PassThru | Add-Member -NotePropertyName File -NotePropertyValue $config.File -Force -PassThru | Add-Member -NotePropertyName SectionPath -NotePropertyValue "appSettings" -Force -PassThru | Set_Type -TypeName "PSWebConfig.AppSetting" } } } } } |