Private/Resolve-ArgusCheckSetting.ps1
|
function Resolve-ArgusCheckSetting { <# .SYNOPSIS Returns the effective Enabled / Severity / Parameters of a check after config overrides. .DESCRIPTION Parameter overrides for names the check does not declare are ignored with a warning, so a typo in the config can't silently change behaviour. #> [CmdletBinding()] [OutputType([hashtable])] param( [Parameter(Mandatory)] [pscustomobject] $Check, [Parameter(Mandatory)] [System.Collections.IDictionary] $Config ) $parameters = @{} foreach ($key in $Check.Parameters.Keys) { $parameters[$key] = $Check.Parameters[$key] } $setting = @{ Enabled = $true; Severity = $Check.Severity; Parameters = $parameters } $entry = $Config.Checks[$Check.Id] if ($entry -is [System.Collections.IDictionary]) { if ($entry.Contains('Enabled')) { $setting.Enabled = [bool]$entry['Enabled'] } if ($entry.Contains('Severity')) { $setting.Severity = [string]$entry['Severity'] } if ($entry['Parameters'] -is [System.Collections.IDictionary]) { foreach ($key in $entry['Parameters'].Keys) { if ($parameters.ContainsKey($key)) { $parameters[$key] = $entry['Parameters'][$key] } else { Write-Warning "Configuration sets unknown parameter '$key' for check $($Check.Id); it is ignored." } } } } $setting } |