Private/Write-ArgusRunSummary.ps1
|
function Write-ArgusRunSummary { <# .SYNOPSIS Prints the compact end-of-run console summary (score, grade, counts per status, output files). #> [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingWriteHost', '', Justification = 'Console summary is the documented exception to the no Write-Host rule.')] [CmdletBinding()] [OutputType([void])] param( [Parameter(Mandatory)] [pscustomobject] $Document, [Parameter()] [System.IO.FileInfo[]] $File = @() ) $score = $Document.Score $tenant = if ($Document.Tenant.Name) { $Document.Tenant.Name } elseif ($Document.Tenant.DefaultDomain) { $Document.Tenant.DefaultDomain } else { 'unknown tenant' } $scoreText = if ($null -eq $score.Score) { 'n/a' } else { "$($score.Score)/100 ($($score.Grade))" } $partial = if ($score.IsPartial) { ' [Partial]' } else { '' } Write-Host '' Write-Host "ARGUS $($Document.Tool.Version) - $tenant" Write-Host ("Governance Score: {0} Coverage: {1}%{2}" -f $scoreText, $score.Coverage, $partial) $colors = @{ Passed = 'Green'; Failed = 'Red'; Investigate = 'Yellow'; Error = 'Magenta'; Skipped = 'DarkGray'; NotRun = 'DarkGray' } Write-Host ("Checks: {0} " -f $score.Counts.Total) -NoNewline foreach ($status in $script:ArgusStatuses) { Write-Host ("{0}: {1} " -f $status, $score.Counts.$status) -ForegroundColor $colors[$status] -NoNewline } Write-Host '' foreach ($item in $File) { Write-Host "Output: $($item.FullName)" } Write-Host '' } |