Private/New-InfraPulseResult.ps1
|
function New-InfraPulseResult { [CmdletBinding()] param( [Parameter(Mandatory)] [ValidateSet('Healthy', 'Warning', 'Critical', 'Unknown', 'Skipped')] [string]$Status, [Parameter(Mandatory)] [string]$CheckName, [Parameter(Mandatory)] [string]$Category, [Parameter(Mandatory)] [string]$ComputerName, [Parameter(Mandatory)] [string]$Target, [Parameter(Mandatory)] [string]$Message, [AllowNull()] [object]$ObservedValue, [AllowNull()] [object]$WarningThreshold, [AllowNull()] [object]$CriticalThreshold, [string]$Recommendation = '', [System.Collections.IDictionary]$Evidence = @{}, [double]$DurationMs = 0, [string]$ErrorMessage = '' ) $result = [pscustomobject][ordered]@{ SchemaVersion = '1.0' ComputerName = $ComputerName CheckName = $CheckName Category = $Category Target = $Target Status = $Status Message = $Message ObservedValue = $ObservedValue WarningThreshold = $WarningThreshold CriticalThreshold = $CriticalThreshold Recommendation = $Recommendation Evidence = $Evidence TimestampUtc = [DateTime]::UtcNow DurationMs = [math]::Round($DurationMs, 2, [MidpointRounding]::AwayFromZero) Error = $ErrorMessage } $result.PSObject.TypeNames.Insert(0, 'InfraPulse.Result') return $result } |