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 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
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
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 }
}
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
Per concludere, trovate in allegato all'articolo uno script per un semplice box informazioni fatto di trattini colorati.