Private/Get-ADFSTkConfiguration.ps1

function Get-ADFSTkConfiguration {
param(
    [switch]$ConfigFilesOnly
)

    if ([string]::IsNullOrEmpty($Global:ADFSTkPaths))
    {
        $Global:ADFSTkPaths = Get-ADFSTKPaths
    }
    
    if(!(Test-Path $Global:ADFSTKPaths.mainConfigFile))
    {
        Write-ADFSTkLog (Get-ADFSTkLanguageText mainconfNoConfigFileFound) -MajorFault
    }
    
    try 
    {
        [xml]$config = Get-Content $Global:ADFSTKPaths.mainConfigFile
    }
    catch
    {
        Write-ADFSTkLog (Get-ADFSTkLanguageText mainconfCouldNotParseConfigFile -f $_) -MajorFault
    }

    if ($PSBoundParameters.ContainsKey('ConfigFilesOnly'))
    {
        if ([string]::IsNullOrEmpty($config.Configuration.ConfigFiles))
        {
            @()
        }
        else
        {
            $config.Configuration.ConfigFiles.ConfigFile | % {
                $ConfigItems = @()
            }{
                $ConfigItems += New-Object -TypeName PSCustomObject -Property @{
                    ConfigFile = $_.'#text'
                    Enabled = $_.enabled
                }
            }{
                $ConfigItems
            }
        }
    }
    else
    {
        $config.Configuration
    }
}