Private/New-METCheckResult.ps1
|
function New-METCheckResult { [CmdletBinding()] param( [Parameter(Mandatory)] [string] $CheckId, [Parameter(Mandatory)] [ValidateSet('MDO','EXO','Teams')] [string] $Category, [Parameter(Mandatory)] [string] $Name, [Parameter(Mandatory)] [ValidateSet('Pass','Fail','Warning','Info','NotApplicable')] [string] $Result, [Parameter(Mandatory)] [ValidateSet('Critical','High','Medium','Low','Informational')] [string] $Severity, [Parameter(Mandatory)] [string] $AffectedObject, [Parameter(Mandatory)] [string] $Finding, [string] $Recommendation = '', [string] $ReferenceUrl = '', [string] $ErrorMessage = $null, [hashtable] $Metadata = $null ) if ($ReferenceUrl -and $ReferenceUrl -notmatch '^https?://') { throw "ReferenceUrl must begin with 'https://' or 'http://': '$ReferenceUrl'" } $scoreMap = @{ Pass = 100; Fail = 0; Warning = 50; Info = $null; NotApplicable = $null } [PSCustomObject]@{ CheckId = $CheckId Category = $Category Name = $Name Result = $Result Severity = $Severity Score = $scoreMap[$Result] AffectedObject = $AffectedObject Finding = $Finding Recommendation = $Recommendation ReferenceUrl = $ReferenceUrl Timestamp = [datetime]::UtcNow Error = $ErrorMessage Metadata = $Metadata } } |