Private/Add-ADFSTkConfigurationItem.ps1

function Add-ADFSTkConfigurationItem {
[CmdletBinding(SupportsShouldProcess=$true)]
param 
(
    $ConfigurationItem,
    [switch]$PassThru
)

    if ([string]::IsNullOrEmpty($Global:ADFSTkPaths))
    {
        $Global:ADFSTkPaths = Get-ADFSTKPaths
    }

    [xml]$config = Get-Content $Global:ADFSTkPaths.mainConfigFile

    if (![string]::IsNullOrEmpty($config.Configuration.ConfigFiles.HasChildNodes) -and ($config.Configuration.ConfigFiles.ConfigFile.InnerText).Contains($ConfigurationItem))
    {
        Write-ADFSTkLog (Get-ADFSTkLanguageText mainconfConfigFileAlreadyAdded) -EntryType Warning
        Write-ADFSTkHost mainconfConfigFileStatus -f ($config.Configuration.ConfigFiles.ConfigFile | ? {$_.InnerText -eq $ConfigurationItem}).enabled
    }
    else
    {
        $node = $config.CreateNode("element","ConfigFile",$null)
        $node.InnerText = $ConfigurationItem
        $node.SetAttribute("enabled","false")
        $config.SelectSingleNode('/Configuration/ConfigFiles').AppendChild($node) | Out-Null
        
        
        #Don't save the configuration file if -WhatIf is present
        if($PSCmdlet.ShouldProcess($Global:ADFSTkPaths.mainConfigFile,"Save"))
        {
            try 
            {
                $config.Save($Global:ADFSTkPaths.mainConfigFile)
                Write-ADFSTkLog (Get-ADFSTkLanguageText  mainconfConfigItemAdded) -ForegroundColor Green
                Write-Host " "
                Write-ADFSTkHost mainconfConfigItemDefaultDisabledMessage -AddSpaceAfter
            }
            catch
            {
                throw $_
            }
        }
    }

    if ($PassThru)
    {
        New-Object -TypeName PSCustomObject -Property @{
            ConfigFile = $ConfigurationItem
            Enabled = "false"
        }
    }
}