14/09/2008

Introduzione a PowerShell

La gestione dell'output

A cura di Efran Cobisi


Un esercizio più complesso


Ora vogliamo visualizzare l’intera lista in colore rosso e Write-Host farà al caso nostro. Sfortunatamente, però, il comando Get-Service | Write-Host –Forgroundcolor Red non funziona come sperato; Write-Host non è così amichevole come altri cmdlet e richiede una lista di oggetti da visualizzare con il colore specificato. Write-Host vuole sapere per ciascun oggetto quali attributi dovranno essere visualizzati.
Dobbiamo quindi aiutare Write-Host nel suo compito: prima di tutto scorriamo la lista di oggetti uno ad uno, creando un ciclo. Ci sono diversi tipi di cicli ed ognuno ha il proprio significato e la propria area di utilizzo. Per il nostro scopo utilizziamo il ciclo fornito dal cmdlet ForEach-Object, che scorre la lista di oggetti e ne passa uno alla volta al cmdlet successivo. All’interno del ciclo possiamo scegliere gli oggetti di interesse utilizzando la variabile automatica $_, una particolare caratteristica di PowerShell che permette di recuperare le variabili presenti in un determinato contesto. È possibile quindi selezionare un particolare attributo di un oggetto utilizzando la sintassi $_.nome-della-proprietà.
Vediamo un esempio:
Get-Process |
	ForEach-Object { Write-Host $_.ProcessName $_.CPU }

Dove Get-Process ritorna una lista di processi, di cui in questo esempio sono visibili solo il nome e la percentuale di tempo di elaborazione poichè l’output del primo cmdlet finisce nel pipe (|) e successivamente Write-Host visualizza solo quei due attributi per ogni oggetto recuperato. Se ripeterete l’esempio più volte non vi stupite dei risultati! Non tutti i processi hanno un tempo di elaborazione e in certe circostanze una linea di risultato può avere solo il nome del processo.
A6: Generate una lista di servizi, visualizzando di ciascuno solo il nome e lo stato. Utilizzate il ciclo ForEach descritto in precedenza, anche se vi vengono in mente soluzioni alternative.

Per ulteriori informazioni sul comando ForEach-Object è possibile consultare la guida di riferimento, a questo indirizzo.

A7: Generate una lista di servizi e visualizzate di ciascuno solo il nome e lo stato in un colore a vostra scelta. Consiglio: prendete la soluzione A6 ed aggiungete i parametri –-Foregroundcolor e –Backgroundcolor.

FIGURA 4: VISUALIZZA I NOMI E GLI STATI DEI SERVIZI IN ROSSO


Commenti



Nessun commento disponibile.

Cobisi EmailVerify.NET is a Microsoft .NET software component that validates email addresses. valid email