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.

Come personalizzare colori testo cmdlet Write-Host 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 Green
  • Write-Host "4 secondi" -ForegroundColor Red
  • Write-Host "3 secondi" -ForegroundColor Yellow
  • Write-Host "2 secondi" -ForegroundColor White
  • Write-Host "1 secondi" -ForegroundColor Blue

Come personalizzare colori testo cmdlet Write-Host PowerShell

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 -NoNewline
  • Write-Host "$env:USERNAME" -ForegroundColor Yellow -BackgroundColor Green
  • Write-Host "Il nome del computer è: " -ForegroundColor DarkYellow -NoNewline
  • Write-Host "$env:COMPUTERNAME" -ForegroundColor Red -BackgroundColor White

Come personalizzare colori testo cmdlet Write-Host PowerShell

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 colorato
  • Write-Host "=== MENU COMANDI ===" -ForegroundColor White -BackgroundColor Blue
  • Write-Host "1) Fai questo" -ForegroundColor Yellow
  • Write-Host "2) Fai quello" -ForegroundColor Green
  • Write-Host "3) Esci" -ForegroundColor Red
  • # Richiedi una scelta all'utente
  • $choice = Read-Host "Scegli un'opzione (1-3)"
  • # Elabora l'inputr
  • switch ($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 }
  • }

Come personalizzare colori testo cmdlet Write-Host PowerShell

Possiamo creare un insieme di righe colorate o che usano i colori di default di PowerShell.

  • Write-Host "Il testo è verde" -ForegroundColor Green
  • Write-Host "Il testo è blu" -ForegroundColor Blue
  • Write-Host "Il testo è normale"
  • Write-host "**********************************"
  • Write-Host "Il testo è rosso su sfondo giallo" -ForegroundColor Red -BackgroundColor Yellow
  • Write-Host "Il testo è giallo su sfondo verde" -ForegroundColor Yellow -BackgroundColor DarkGreen

Come personalizzare colori testo cmdlet Write-Host PowerShell

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

Come personalizzare colori testo cmdlet Write-Host PowerShell