en-us/Creating_Colorized_Format_With_Custom_Actions.walkthru.help.txt

# It's a piece of cake to do colorized formatting and output in PowerShell: once you know the right tricks.
# List Views and Table views are kind of obvious. To do something like colorized output, you need to use a CustomControl.
# A Custom Control can do any action you'd like in response to that type being rendered.
# This very short custom control will put an * on the screen in green if $_.Good is found on a type
Write-FormatView -TypeName GoodOrBad -Action {
    if ($_.Good) {
        Write-Host "*" -ForegroundColor Green
    } else {
        Write-Host "*" -ForegroundColor Red
    }
    # Output null, so that nothing is rendered and no brackets appear (indicating output was expected)
    $null
}
 
# To highlight the whole line, you will need to use the host object, and pad each line to the right size
Write-FormatView -TypeName GoodOrBad -Action {
    $background = 'White'
    $width = $host.UI.RawUI.BufferSize.Width
    if ($_.Good) {
        Write-Host "*".PadRight($width) -ForegroundColor Green
    } else {
        Write-Host "*".PadRight($width) -ForegroundColor Red
    }
    # Output null, so that nothing is rendered and no brackets appear (indicating output was expected)
    $null
}
 
# That's it. There's really not that much to colorized formatting in PowerShell, once you know the trick.
# To use a view like this in your module, use some code like this:
$views = @()
$views += Write-FormatView -TypeName GoodOrBad -Action {
    $background = 'White'
    $width = $host.UI.RawUI.BufferSize.Width
    if ($_.Good) {
        Write-Host "*".PadRight($width) -ForegroundColor Green
    } else {
        Write-Host "*".PadRight($width) -ForegroundColor Red
    }
    # Output null, so that nothing is rendered and no brackets appear (indicating output was expected)
    $null
}
$views | Out-FormatData | Set-Content .\YourModule.Format.ps1xml