14/09/2008

Introduzione a PowerShell

Lavorare con i processi

A cura di Efran Cobisi


Lavorare con i processi


Il comando Get-Process elenca tutti i processi del vostro sistema. La lista può essere molto lunga. Per ordinare la lista utilizzate un altro cmdlet: Sort-Object. La modalità predefinita di ordinamento di Sort-Object è ascendente ma è possibile cambiarne il valore tramite il parametro -Descending.
L’argomento di questo cmdlet sono le proprietà (una o più) dell’oggetto da utilizzare per ordinare il risultato (es. CPU).
A1: Provate ora a generare la lista di tutti i processi ed ad ordinarla inversamente secondo la loro percentuale di utilizzo del processore (proprietà CPU). Avete già imparato tutto ciò di cui avete bisogno per farlo: Get-Process, Sort-Object ed il pipe |. Consiglio: CPU non è un parametro di Sort-Object ma è un argomento che potete utilizzare per l’ordinamento. Non ha, perciò, il prefisso –.

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

Nel prossimo esercizio vogliamo fare in modo di limitare un po’ la lista per renderla più facile da gestire. Utilizzeremo il comando Select-Object. Select-Object può accettare diversi parametri (utilizzate Get-Help per trovarli), ma in questo caso ci servono solo –First x e –Last y per recuperare i primi x o gli ultimi y oggetti in una lista. Es. Select-Object –First 5.
Select-Object da solo non serve a nulla ma, anzi, attende che gli venga fornito dell’input tramite pipe.
A2: Generate una lista dei primi dieci processi, ordinati in base alla loro percentuale di utilizzo del processore. Per fare ciò, utilizzate il risultato ottenuto dall’esercizio A1 e aggiungeteci il comando Select-Object. Ci sono due modi per raggiungere una soluzione ottimale, a seconda di come la lista viene ordinata. Provate a trovarli entrambi. Suggerimento: un’opzione utilizza il parametro –First, l’altra il parametro –Last.

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

Utilizzeremo il prossimo esercizio come veloce introduzione alle variabili. In parole semplici, le variabili possono memorizzare qualsiasi valore, nonostante tali valori possano anche essere oggetti veri e propri! Se vorrete approfondire questi aspetti meno pratici è conveniente che vi rifacciate alla documentazione indicate all’inizio di questo libro; per ora vi basti sapere che le variabili in PowerShell devono sempre iniziare con il carattere $. Potete memorizzare il risultato dell’esercizio A2 in una variabile, consentendo l’accesso alla lista dei 10 processi in seguito ed in qualsiasi momento, e permettendo eventualmente di confrontarne tali valori con altri recuperati nel corso del tempo, valutando i cambiamenti del sistema.
Impostare il valore di una variabile è semplice:
$a = Get-Process | Sort-Object CPU -Desc…

A3: Assegna alla variabile $P la lista dell’esercizio A2. Consiglio: utilizzate il tasto “Freccia su” per richiamare l’ultimo comando utilizzato e il tasto “Home” per spostare il cursore all’inizio della riga; poi inserite i comandi aggiuntivi. Potete visualizzare il contenuto della variabile a video semplicemente digitando $P al prompt.


FIGURA 3: OUTPUT DELLA VARIABILE $P


Commenti


17/10/2011 15.20
selidori: Errore nella guida
" Avete già imparato tutto ciò di cui avete bisogno per farlo: Get-Process, Sort-Object ed il pipe |. "

Non è vero.
Il PIPE come logica è stato appena accennato ma non spiegato come comando, meno che meno il | (si è fatto un solo esempio con >).

Infatti il comando
Get-Process Sort-Object

Genera un errore scritto in rosso:
Get-Process : Cannot find a process with the name "Sort-Object". Verify the pro
cess name and call the cmdlet again.
At line:1 char:12
+ Get-Process <<<< Sort-Object
+ CategoryInfo : ObjectNotFound: (Sort-Object:String) [Get-Proces
s], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.
Commands.GetProcessCommand
18/10/2011 13.06
efran.cobisi: RE: Errore nella guida
Attenzione, credo tu abbia copiato male la riga di comando, che deve essere (nota il simbolo | tra i due comandi):

Get-Process | Sort-Object


"Il PIPE come logica è stato appena accennato ma non spiegato come comando, meno che meno il | (si è fatto un solo esempio con >)."

Ehm... Il simbolo | è il pipe.
E questo è un tutorial, non una guida completa, quindi non aspettarti una descrizione esaustiva delle feature della shell. :)

Se vuoi approfondire il meccanismo di piping della shell ti consiglio di dare un'occhiata al mio libro Windows PowerShell 2.0 - Guida completa.

Ciao, a presto!


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