lib/config/Get-IcingaPowerShellConfig.psm1
<# .SYNOPSIS Returns the configuration for a provided config path .DESCRIPTION Returns the configuration for a provided config path .FUNCTIONALITY Returns the configuration for a provided config path .EXAMPLE PS>Get-IcingaPowerShellConfig -Path 'framework.daemons'; .PARAMETER Path The path to the config item to check for .INPUTS System.String .OUTPUTS System.Object .LINK https://github.com/Icinga/icinga-powershell-framework #> function Get-IcingaPowerShellConfig() { param ( $Path = '' ); $Config = Read-IcingaPowerShellConfig; $PathArray = $Path.Split('.'); $ConfigObject = $Config; foreach ($entry in $PathArray) { if (-Not (Test-IcingaPowerShellConfigItem -ConfigObject $ConfigObject -ConfigKey $entry)) { return $null; } $ConfigObject = $ConfigObject.$entry; } return $ConfigObject; <# # Alternate config parser. Might come handy in the future, requires to redesign # Set-IcingaPowerShellConfig including all calls for full coverage $Config = Read-IcingaPowerShellConfig; $PathArray = $Path.Split('.'); $ConfigObject = $Config; [int]$Index = 0; $entry = $PathArray[$Index]; while ($Index -lt $PathArray.Count) { if (-Not (Test-IcingaPowerShellConfigItem -ConfigObject $ConfigObject -ConfigKey $entry) -And $Index -lt $PathArray.Count) { $Index += 1; $entry = [string]::Format('{0}.{1}', $entry, $PathArray[$Index]); continue; } elseif (-Not (Test-IcingaPowerShellConfigItem -ConfigObject $ConfigObject -ConfigKey $entry) -And $Index -ge $PathArray.Count) { return $null; } $ConfigObject = $ConfigObject.$entry; $Index += 1; $entry = $PathArray[$Index]; } return $ConfigObject; #> } |