# Format, colorize docker ps output
# Define a fixed width for the STATUS column
$statusWidth = 30

# Capture the Docker output into a variable
$dockerOutput = docker ps -f status=running -f status=exited --format "{{.Names}}`t{{.Status}}`t{{.Ports}}"

# Print header with colors
Write-Host ("NAME".PadRight(20) + "STATUS".PadRight($statusWidth) + "PORTS") -ForegroundColor Cyan -NoNewline
Write-Host ""

# Split the output into lines and loop over them
$dockerOutput -split '\r?\n' | ForEach-Object {
    if ($_ -ne "") {
        $fields = $_ -split "`t"
        Write-Host ($fields[0].PadRight(20)) -NoNewline -ForegroundColor Yellow
        Write-Host ($fields[1].PadRight($statusWidth)) -NoNewline -ForegroundColor Green
        Write-Host ($fields[2]) -ForegroundColor Blue
    }
}