L'apprendimento dei nomi dei comandi e dei relativi parametri costituisce un significativo sforzo in termini di tempo nella maggior parte delle interfacce della riga di comando. Il problema è dovuto al fatto che esistono pochissimi modelli, per cui il solo modo per imparare è memorizzare ciascuno comando e parametro di cui si potrà avere normalmente bisogno.
Quando si utilizza un nuovo comando o parametro, non è in genere possibile servirsi delle nozioni già note, ma occorre individuare e imparare un nuovo nome. Osservando il modo in cui le interfacce, a partire da un ristretto set di strumenti, si estendono grazie ad aggiunte incrementali di funzionalità, è facile comprendere perché la struttura non è standard. In particolare, nel caso dei nomi dei comandi, ciò appare logico in quanto ogni comando è uno strumento distinto. Tuttavia esiste un modo migliore per gestire i nomi dei comandi.
Quasi tutti i comandi sono realizzati in modo che possano gestire gli elementi del sistema operativo o le applicazioni, ad esempio i servizi o i processi. I comandi hanno nomi diversi che possono o meno essere raggruppati. Nei sistemi Windows, ad esempio, è possibile utilizzare i comandi net start e net stop per avviare e arrestare un servizio. Esiste un altro strumento di controllo dei servizi più generalizzato per Windows che ha un nome del tutto diverso, ossia sc. Tale comando tuttavia non rientra nella struttura di denominazione dei comandi net per i servizi. Per la gestione dei processi in Windows sono disponibili il comando tasklist, che consente di elencare i processi, e il comando taskkill, che permette di arrestarli.
I comandi che richiedono i parametri presentano specifiche irregolari per tali parametri. Non è possibile utilizzare il comando net start per avviare un servizio in un computer remoto. Questa operazione può essere eseguita con il comando sc, ma occorre specificare il computer remoto anteponendo al nome una doppia barra rovesciata. Ad esempio, per avviare il servizio spooler in un computer remoto denominato DC01, digitare sc \\DC01 start spooler. Per elencare le attività in esecuzione su DC01, è necessario utilizzare il parametro /S (per "sistema") e fornire il nome DC01 senza barre rovesciate: tasklist /S DC01.
Sebbene esistano importanti differenze tecniche tra un servizio e un processo, entrambi sono esempi di elementi gestibili su un computer con un ciclo di vita ben definito. Un servizio o un processo può essere avviato o arrestato, oppure è possibile ottenere l'elenco di tutti i servizi o i processi attualmente in esecuzione. In altri termini, quantunque un servizio e un processo siano diversi, le azioni eseguibili su di essi sono spesso concettualmente identiche. Inoltre, anche le scelte di personalizzazione di un'azione mediante la specifica dei parametri possono essere concettualmente simili.
Windows PowerShell sfrutta queste somiglianze per ridurre il numero di nomi da conoscere per comprendere e utilizzare i cmdlet.
I cmdlet utilizzano nomi di tipo verbo-sostantivo per ridurre la quantità di comandi da memorizzare
In Windows PowerShell viene utilizzato il sistema di denominazione "verbo-sostantivo" in base al quale ogni nome di cmdlet è formato da un verbo standard seguito da un trattino e da un sostantivo specifico. I verbi utilizzati in Windows PowerShell non sempre sono analoghi ai verbi della lingua inglese, tuttavia esprimono particolari azioni in Windows PowerShell. I sostantivi sono molto simili a quelli di qualsiasi lingua: descrivono tipi specifici di oggetti importanti nell'amministrazione del sistema. Osservando alcuni esempi di verbi e sostantivi sarà facile dimostrare come questi nomi formati da due parti riducano l'impegno di apprendimento.
I sostantivi sono meno limitati ma devono sempre descrivere ciò su cui un comando agisce. In Windows PowerShell esistono comandi quali Get-Process, Stop-Process, Get-Service e Stop-Service.
Nel caso di due sostantivi e di due verbi, la coerenza non semplifica molto l'apprendimento. Se tuttavia si considera un insieme standard di 10 verbi e 10 sostantivi, è necessario imparare solo 20 parole che però possono essere utilizzate per formare 100 diversi nomi di comando.
Spesso è possibile riconoscere l'azione eseguita da un comando leggendone il nome, e in genere è evidente quale nome utilizzare per un nuovo comando. Ad esempio, il comando per l'arresto del computer potrebbe essere Stop-Computer. Il comando che elenca tutti i computer della rete potrebbe essere Get-Computer. Il comando che visualizza la data del sistema è Get-Date.
È possibile elencare tutti i comandi che includono un determinato verbo utilizzando il parametro -Verb con il comando Get-Command, che verrà illustrato in dettaglio nella sezione successiva. Ad esempio, per visualizzare tutti i cmdlet che utilizzano il verbo Get, digitare:
PS> Get-Command -Verb Get CommandType Name Definition ----------- ---- ---------- Cmdlet Get-Acl Get-Acl [[-Path] <String[]>]... Cmdlet Get-Alias Get-Alias [[-Name] <String[]... Cmdlet Get-AuthenticodeSignature Get-AuthenticodeSignature [-... Cmdlet Get-ChildItem Get-ChildItem [[-Path] <Stri... ...
Il parametro -Noun è persino più utile perché consente di visualizzare una famiglia di comandi che interessa lo stesso tipo di oggetto. Se ad esempio si desidera visualizzare i comandi disponibili per la gestione dei servizi, digitare il comando seguente:
PS> Get-Command -Noun Service CommandType Name Definition ----------- ---- ---------- Cmdlet Get-Service Get-Service [[-Name] <String... Cmdlet New-Service New-Service [-Name] <String>... Cmdlet Restart-Service Restart-Service [-Name] <Str... Cmdlet Resume-Service Resume-Service [-Name] <Stri... Cmdlet Set-Service Set-Service [-Name] <String>... Cmdlet Start-Service Start-Service [-Name] <Strin... Cmdlet Stop-Service Stop-Service [-Name] <String... Cmdlet Suspend-Service Suspend-Service [-Name] <Str... ...
Un comando non è necessariamente un cmdlet, proprio perché ha lo schema di denominazione verbo-sostantivo. Un esempio di comando nativo di Windows PowerShell che non è un cmdlet ma ha un nome di tipo verbo-sostantivo è il comando per la cancellazione di una finestra della console: Clear-Host. Il comando Clear-Host è in realtà una funzione interna, come è possibile osservare eseguendo Get-Command su di esso:
PS> Get-Command -Name Clear-Host CommandType Name Definition ----------- ---- ---------- Function Clear-Host $spaceType = [System.Managem...
I cmdlet utilizzano parametri standard
Come notato in precedenza, i comandi utilizzati nelle tradizionali interfacce della riga di comando di solito non presentano nomi di parametro coerenti. Talvolta i parametri non hanno affatto dei nomi. Se li hanno, sono spesso formati da un solo carattere o da parole abbreviate digitabili rapidamente ma non facilmente comprensibili per i nuovi utenti.
Diversamente dalla maggior parte delle altre interfacce tradizionali della riga di comando, in Windows PowerShell i parametri vengono elaborati direttamente, e tale accesso diretto ai parametri, insieme alle indicazioni dello sviluppatore, viene utilizzato per standardizzare i nomi dei parametri. Anche se ciò non assicura che tutti i cmdlet siano sempre conformi agli standard, tuttavia lo favorisce.
Nota | |
Ai nomi di parametro è sempre preposto il trattino '-' per consentire a Windows PowerShell di identificarli chiaramente come parametri. Nell'esempio Get-Command -Name Clear-Host, il nome del parametro è Name, ma viene digitato come -Name. |
Di seguito vengono riportate alcune delle caratteristiche generali dei nomi di parametro standard e il relativo utilizzo.
Parametro della Guida (?)
Quando si specifica il parametro -? in un cmdlet, quest'ultimo non viene eseguito. Viene invece visualizzata la Guida relativa al cmdlet in questione.
Parametri comuni
In Windows PowerShell sono disponibili diversi parametri noti come parametri comuni. Poiché tali parametri sono controllati dal modulo di Windows PowerShell, ogni volta che vengono implementati da un cmdlet funzionano sempre allo stesso modo. I parametri comuni sono WhatIf, Confirm, Verbose, Debug, Warn, ErrorAction, ErrorVariable, OutVariable e OutBuffer.
Parametri consigliati
I cmdlet essenziali di Windows PowerShell utilizzano nomi standard per i parametri simili. Sebbene l'impiego dei nomi di parametro non sia obbligatorio, il loro utilizzo ne incoraggia la standardizzazione.
Ad esempio, è consigliabile assegnare a un parametro che fa riferimento al nome di un computer il nome ComputerName anziché Server, Host, System, Node o un'altra parola alternativa di uso comune. Tra i più importanti nomi di parametro consigliati vi sono Force, Exclude, Include, PassThru, Path e CaseSensitive.