14/09/2008

Introduzione a PowerShell

Verificare le condizioni

A cura di Efran Cobisi


  Pagina successiva
Output in HTML
  Pagina precedente
Un esercizio più complesso

Verificare le condizioni utilizzando il comando if


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

Per ulteriori informazioni sui concetti sopra esposti è possibile consultare la guida di riferimento: If/else/elseif, Operatori di confronto.

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


  Pagina successiva
Output in HTML
  Pagina precedente
Un esercizio più complesso
Commenti
18/11/2009 14.38
paolo154: aiuto
non riesco a creare lo script!?!?
18/11/2009 14.48
efran.cobisi: RE: Aiuto
Ciao Paolo, cosa non riesci a fare? Meglio se scrivi un nuovo post nel forum, così ti possiamo aiutare meglio...

Ciao
18/11/2009 16.11
paolo154: Comando if
Praticamente non capivo come integrare il comando "if", per risolvere l' esercizio. Ho seguito il tuo consiglio, ed ho trovato la risposta sul forum.
Grazie.