Questo capitolo è dedicato alla scoperta della “guida in linea”, uno strumento che in tutti i software senza interfaccia grafica è fondamentale. Direi che nemmeno in quelli con GUI fa male guardarci dentro 🙂

Perché è importante imparare ad usare la guida

Cercare le risposte su Google ai nostri problemi magari sembra inizialmente essere utile e profittevole, ma impareremo solo a fare copia e incolla senza mai padroneggiare il PowerShell. Sapersi riferire rapidamente e con efficienza alla guida in linea è assolutamente fondamentale per far fronte a tutte le funzioni di questo software.

La guida in linea non viene fornita con il software ma, per averla a disposizione sempre aggiornata Microsoft ci “obbliga” a scaricarla da internet.

Siccome i file della guida risiedono nella cartella System32, per aggiornare la guida bisognerà lanciare PowerShell in modalità amministratore. Questo è prontamente visibile nella barra del titolo.

Digitiamo dunque: update-help

Partirà la procedura di aggiornamento della guida che si consiglia di avviare una volta al mese. (non potevano farla automatica?)

La guida è open source e disponibile a questo indirizzo http://github.com/powershell, dove è possibile trovare anche degli aggiornamenti che magari non sono stati inclusi nel pacchetto scaricabile all’interno del software.

Usare la guida

Una delle funzioni più comode è quella di cercare un argomento nella guida. Si fa con il comando Help -Name dove -Name è il parametro che dobbiamo passare al comando Help per eseguire la ricerca.

Proviamo dunque a ricercare informazioni per “event log”, digitando Help *log* che si occuperà di effettuare una ricerca libera tra gli argomenti della guida per la stringa “log”. Poi proviamo ugualmente Help *event* per cercare argomenti per la stringa “event”.

Avendo individuato il cmdlet Get-EventLog, chiediamo aiuto su questo specifico comando con Help Get-EventLog.

Alla fine, cercare argomenti nella guida è come eseguire una classica query, se eseguo solo Help Get-EventL* il software selezionerà le voci che iniziano per Get-EventL e poi hanno altri caratteri. Siccome il risultato di questa ricerca è soltanto uno, la guida aprirà direttamente il topic.

Capire la guida

Se avete provato ad eseguire i comandi sopra descritti, avrete notato come in risposta ad un semplice Help Get-EventLog otteniamo qualcosa tipo questo:

Ovviamente abbiamo informazioni basilari come il nome del comando e un veloce riepilogo, ma dove sbatteremo più la testa è la sintassi. In questa riga troviamo tutto quello che ci serve per interagire col comando in maniera corretta (almeno formalmente!).

Perché però in questo caso nella sintassi il comando Get-EventLog si ripete due volte? Questo è dovuto al fatto che il comando può essere usato con due diversi set di parametri. Ciò significa che possiamo scegliere in maniera alternativa parametri da una o l’altra collezione ma questo ci vincola a prenderne altri solo da quella lista.

Mi spiego meglio: se scelgo di utilizzare il parametro [-LogName] allora potrò scegliere gli altri parametri solo dal set al quale appartiene. Può capitare che alcuni parametri vengano riportati in entrambe le liste. Se scegliamo solo un parametro riportato in entrambe le liste, PowerShell considererà scelta la prima lista elencata.

Ah… avrete notato che alla fine compaiono i common parameters. Sono 8 parametri comuni a tutti i comandi e verranno trattati poi.

Chiaramente non abbiamo bisogno di specificare tutti i parametri per il comando (che vita sarebbe?). La regola generale è che se un parametro e il suo valore compaiono tra parentesi quadre, il parametro è opzionale e può essere omesso, altrimenti è obbligatorio. Se proviamo ad eseguire un cmdlet senza specificare i parametri obbligatori, PowerShell ce li chiederà. Provate infatti a digitare solo Get-EventLog e vi chiederà il LogName.

Altra nota positiva è che per identificare e dunque specificare un parametro non è necessario digitare tutto il nome, ma bastano solo le lettere del nome necessarie a identificarlo. -Li sarà dunque preso come -List.

Ci sarebbe poi da segnalare che alcuni parametri sono “posizionali” (non so se ho tradotto propriamente “positional”), il che significa che possiamo evitare di digitare il nome del parametro in quanto PowerShell sa benissimo cosa aspettarsi in quella posizione.

All’inizio mi sembra un buon modo per incasinare tutto, dunque rimanderò l’uso di questo sistema a tra qualche tempo. Se però volete individuare quali parametri hanno una posizione assegnata, digitate: help Get-EventLog -full

Possiamo dividere i parametri in Switches e “a input”. I parametri Switches sono di un tipo particolare, cioè non c’è necessariamente bisogno di passargli un valore ma basta inserirli nel comando per attivare una risposta. Gli altri parametri, invece, hanno bisogno di dati che possono essere passati nelle classiche tipologie:

  • String: una successione di lettere o numeri (caratteri).
  • Int, int32 o Int64: un numero intero.
  • DateTime: una data (varia in base al formato regionale in uso nel sistema.

Sarà la descrizione del comando a dirci che tipo di dati passare, ad esempio: -Message <string>.

Potrà capitare di incontrare la dicitura String[] che significa che possiamo passare al parametro una stringa ma anche un Array. Cioè una lista di valori separata da virgola oppure una lista con un valore per riga.

Un’altra cosa davvero interessante è quella di poter richiamare solo degli esempi dall’Help. Basterà concludere il comando Help col parametro -example e otterremo solo gli esempi relativi all’uso del comando.

Ed ecco l’ultimo parametro per oggi relativo all’Help: -online. Ovviamente ci permette di aprire una scheda del browser e visualizzare online le informazioni relative all’help. La cosa buona è che, oltre ad essere più leggibili e navigabili, le informazioni sono aggiornate all’ultima versione.

Lab

Beh, comprate il libro per gli esercizi! 🙂

Vai al prossimo capitolo