icinga-powershell-framework/lib/config/Get-IcingaPowerShellConfig.psm1

67 lines
1.8 KiB
PowerShell
Raw Normal View History

2020-04-28 09:24:57 -04:00
<#
.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;
2021-09-14 03:43:47 -04:00
<#
# 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;
#>
}