Try this:
function Transform-Object
{
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline=$true)]
[PSObject]$InputObject,
[Object[]]$Property = $null
)
BEGIN
{
$valueToHighlight = "Handles"
}
PROCESS
{
Write-Host
if ($Property)
{
$properties = $InputObject | Select-Object -Property $Property
for ([int]$i = 0; $i -lt $Property.Length; $i++)
{
$name = $($Property[$i]).ToString()
$value = $properties.$name
if ($name -eq $valueToHighlight)
{
Write-Host "$name, " -NoNewLine
Write-Host "$value" -BackgroundColor Green -ForeGroundColor White
}
else
{
Write-Host "$name, $value"
}
}
}
else
{
$properties = $InputObject | Get-Member -MemberType Properties
foreach ($property in $properties)
{
$name = $property.Name
$value = $InputObject.$name
if ($name -eq $valueToHighlight)
{
Write-Host "$name, " -NoNewLine
Write-Host "$value" -BackgroundColor Green -ForeGroundColor White
}
else
{
Write-Host "$name, $value"
}
}
}
}
END
{
}
}
Get-Process | Select-Object -Property Handles, Id, ProcessName | Transform-Object -Property Handles, ProcessName