Quando durante l'esecuzione di uno script PowerShell è necessario comunicare qualcosa all'utente del computer, o interagire con lui tramite un menu di scelte, è possibile usare il cmdlet Write-Host e personalizzare i colori dell'output in modo da evidenziare meglio i vari messaggi. Ci sono due opzioni da poter aggiungere a Write-Host, -ForegroundColor è il colore del testo del messaggio, -BackgroundColor è il colore di sfondo a questo testo.
I colori utilizzabili sono: Black, DarkBlue, DarkGreen, DarkCyan, DarkRed, DarkMagenta, DarkYellow, Gray, DarkGray, Blue, Green, Cyan, Red, Magenta, Yellow, White.
Per vedere l'effetto dei colori disponibili si può usare il comando:
[enum]::GetValues([System.ConsoleColor]) | Foreach-Object {Write-Host $_ -ForegroundColor $_ }
Il black, il primo della lista, è nascosto dal tema utilizzato da PowerShell.

Vediamo ora alcuni semplice script per capire come usare i colori.
Possiamo colorare ogni riga in modo diverso:
Write-Host "Il computer si autodistruggerà entro 5 secondi" -ForegroundColor GreenWrite-Host "4 secondi" -ForegroundColor RedWrite-Host "3 secondi" -ForegroundColor YellowWrite-Host "2 secondi" -ForegroundColor WhiteWrite-Host "1 secondi" -ForegroundColor Blue

Oppure visualizzare un testo qualsiasi in un colore, poi delle variabili d'ambiente, come nome utente e nome computer, in modo diverso, l'opzione -NoNewline mantiene l'output del comando su una sola riga.
Write-Host "Il nome dell'account è: " -ForegroundColor DarkYellow -NoNewlineWrite-Host "$env:USERNAME" -ForegroundColor Yellow -BackgroundColor GreenWrite-Host "Il nome del computer è: " -ForegroundColor DarkYellow -NoNewlineWrite-Host "$env:COMPUTERNAME" -ForegroundColor Red -BackgroundColor White

Si può creare un menu di scelte colorate e far eseguire comandi diversi, o appunto mostrare un messaggio colorato per ogni riga.
# Visualizza un menu coloratoWrite-Host "=== MENU COMANDI ===" -ForegroundColor White -BackgroundColor BlueWrite-Host "1) Fai questo" -ForegroundColor YellowWrite-Host "2) Fai quello" -ForegroundColor GreenWrite-Host "3) Esci" -ForegroundColor Red# Richiedi una scelta all'utente$choice = Read-Host "Scegli un'opzione (1-3)"# Elabora l'inputrswitch ($choice) {"1" { Write-Host "Hai scelto di fare questo." -ForegroundColor Yellow }"2" { Write-Host "Hai scelto di fare quello." -ForegroundColor Green }"3" { Write-Host "Esci" -ForegroundColor Red; exit }default { Write-Host "Opzione sbagliata, riprova." -ForegroundColor Red }}

Possiamo creare un insieme di righe colorate o che usano i colori di default di PowerShell.
Write-Host "Il testo è verde" -ForegroundColor GreenWrite-Host "Il testo è blu" -ForegroundColor BlueWrite-Host "Il testo è normale"Write-host "**********************************"Write-Host "Il testo è rosso su sfondo giallo" -ForegroundColor Red -BackgroundColor YellowWrite-Host "Il testo è giallo su sfondo verde" -ForegroundColor Yellow -BackgroundColor DarkGreen

Per concludere, trovate in allegato all'articolo uno script per un semplice box informazioni fatto di trattini colorati.
