L’ultimo concetto non ancora analizzato consiste nel verificare le condizioni. Vi sono diverse soluzioni possibili per risolvere questo tipo di problema ma ci limiteremo, per ora, al comando if.
Probabilmente ne conoscete già la sintassi perché è molto simile a quella di altri linguaggi di scripting e di programmazione; ad ogni modo è davvero molto semplice:
if (condizione) {comando/i da eseguire}
elseif (condizione2) {comando/i da eseguire}
else {comando/i da eseguire}
elseif è opzionale e non sempre necessario. Se volete eseguire più di un comando all’interno dell’area delimitata dalle parentesi graffe {}, potete separare ciascuno utilizzando il punto e virgola o un ritorno a capo. Windows PowerShell attende semplicemente per la parentesi graffa chiusa } alla fine.
Windows PowerShell accetta diversi operatori di confront all’interno delle condizioni: iniziano tutti con il trattino “–“ e ciascuno consiste tipicamente in un’abbreviazione di due lettere di un termine inglese: ad esempio, -eq sta per ‘equals’ e verifica l’uguaglianza tra due termini. Gli operatori di confronto più importanti sono elencati di seguito:
| -eq |
Equal
Uguaglianza tra due termini
|
| -match |
Match
Match tra due termini, non così limitato come Equals
|
| -ne |
Not equal
Disuguaglianza tra due termini |
| -notmatch |
Not match
Non match tra due termini
|
| -gt, -ge |
Greater than / Greater than or equal to
Maggiore di/Maggiore di o uguale a tra due termini
|
| -lt, -le |
Less than / Less than or equal to
Minore di/Minore di o uguale a tra due termini
|
L’ultimo esercizio di questa sezione combina tutti i punti del problema iniziale del monitoraggio di un sistema utilizzando PowerShell. Tutti i servizi di un sistema sono dapprima ordinati in base al proprio status e successivamente visualizzati a video, ciascuno colorato in base al proprio stato: i servizi arrestati in rosso, quelli avviati in verde.
A8: Recuperate la lista di tutti i servizi. Ordinate la lista per stato, poi visualizzate a video il nome di ciascun servizio utilizzando il colore rosso o verde a seconda dello del stato del servizio, come descritto in precedenza. Suggerimento: utilizzate dapprima il cmdlet Sort-Object come negli esercizi precedenti. Poi utilizzate un ciclo ForEach ma, anzichè sfruttare direttamente Write-Host, aggiungete un blocco if. Potete recuperare lo stato di un servizio all’interno del ciclo utilizzando come di consueto $_.Status; i valori di interesse che questa proprietà può assumere sono “Stopped” (servizio arrestato) o “Running” (servizio avviato). Ricordate la sintassi: la condizione del blocco if è inserita all’interno di parentesi tonde () ed il comando da eseguire tra parentesi graffe {}. Ignorate le altre opzioni e, per semplicità, evitate il blocco opzionale elseif. Non dimenticate la parentesi graffa finale } per il cmdlet ForEach! Quando raggiungete la fine di una linea che inizia per >>, chiudete il blocco con un paio di ritorni a capo per eseguire lo script che avete creato.
Questa volta eseguite nuovamente lo script ma omettete il cmdlet Sort-Object. Utilizzate le frecce cursore in maniera tale da non dover reinserire tutti i comandi di nuovo.
ForEach-Object può essere abbreviato in ForEach. Potreste renderlo ancora più breve ma dobreste ricordarvi a memoria il significato di ciascuna sigla ogni volta. E così non sarebbe più tanto semplice. Quindi, per ora continuiamo ad utilizzare ForEach-Object o ForEach.
FIGURA 5: OUTPUT A COLORI DEI SERVIZI