The function Label
is from the module: github.com/Ninmonkey.Console
$basePath = 'C:\Program Files'
$calcProp = @{}
$calcProp.FileSize = @{
n = 'Size'
e = { $_.Length | Format-FileSize }
Alignment = 'right'
}
# relative path defaults to relative your current location, so I override it
$calcProp.RelativePath = @{
n = 'RelativePath'
e = {
Push-Location $baseBath
$_.FullName | Resolve-Path -Relative
Pop-Location
}
}
$calcProp.ColorizedName = @{
n = 'ColorName'
e = {
$Color = ($_ | Test-IsDirectory) ? 'blue' : 'green'
Label $_.Name -fg $Color -Separator ''
}
}
$DefaultPropList = 'Name', $calcProp.ColorizedName, $calcProp.RelativePath
Label 'basePath' $basePath
$files = Get-ChildItem $basePath -Depth 2
$files | Format-Table Name, Length, $calcProp.FileSize, $calcProp.RelativePath
$files | Format-Table $calcProp.FileSize, $calcProp.ColorizedName
# Using pre-declared property lists, which may include scriptblocks like $calcProp.FileSize
$files | Format-Table -Property $DefaultPropList