Apprendimento dei nomi dei comandi di PowerShellLearning PowerShell command names

L'apprendimento dei nomi dei comandi e dei parametri richiede un notevole investimento di tempo con la maggior parte delle interfacce della riga di comando.Learning names of commands and parameters requires a significant time investment with most command-line interfaces. Il problema è l'assenza di modelli generali.The issue is that there are few patterns. La memorizzazione è l'unico modo per apprendere i comandi e i parametri usati più di frequente.Memorization is the only way to learn the commands and parameters that you need to use on a regular basis.

Quando si usa un nuovo comando o parametro, non è sempre possibile usare gli elementi già noti.When you work with a new command or parameter, you can't always use what you already know. È necessario trovare e apprendere un nuovo nome.You have to find and learn a new name. Normalmente, le interfacce della riga di comando iniziano con un piccolo set di strumenti e quindi crescono attraverso aggiunte incrementali.Traditionally, command-line interfaces start with a small set of tools and grow with incremental additions. Per questo motivo, è facile comprendere come non vi sia una struttura standard.It's easy to see why there's no standard structure. Questo approccio sembra logico per i nomi di comando, poiché ogni comando è uno strumento separato.This seems logical for command names since each command is a separate tool. PowerShell usa un metodo migliore per gestire i nomi di comando.PowerShell has a better way to handle command names.

Apprendimento dei nomi di comando nelle shell tradizionaliLearning command names in traditional shells

La maggior parte dei comandi serve per gestire elementi del sistema operativo o applicazioni, ad esempio servizi o processi.Most commands are built to manage elements of the operating system or applications, such as services or processes. I comandi hanno nomi che possono o meno appartenere a una famiglia.The commands have names that may or may not fit into a family. Ad esempio, nei sistemi Windows è possibile usare i comandi net start e net stop per avviare e arrestare un servizio.For example, on Windows systems, you can use the net start and net stop commands to start and stop a service. Sc.exe è un altro strumento di controllo dei servizi per Windows.Sc.exe is another service control tool for Windows. Questo nome non corrisponde al modello di denominazione per i comandi del servizio net.exe.That name does not fit into the naming pattern for the net.exe service commands. Per la gestione dei processi, Windows offre il comando tasklist.exe per elencare i processi e il comando taskkill.exe per terminarli.For process management, Windows has the tasklist.exe command to list processes and the taskkill.exe command to kill processes.

Inoltre, questi comandi prevedono specifiche irregolari per i parametri.Also, these commands have irregular parameter specifications. Non è possibile usare il comando net start per avviare un servizio in un computer remoto.You can't use the net start command to start a service on a remote computer. Il comando sc.exe può avviare un servizio in un computer remoto.The sc.exe command can start a service on a remote computer. Tuttavia, per specificare il computer remoto, è necessario aggiungere al nome un prefisso costituito da una doppia barra rovesciata.But to specify the remote computer, you must prefix its name with a double backslash. Per avviare il servizio spooler in un computer remoto denominato DC01, è necessario digitare sc.exe \\DC01 start spooler.To start the spooler service on a remote computer named DC01, you type sc.exe \\DC01 start spooler. Per elencare le attività in esecuzione in DC01, usare il parametro /S e il nome del computer senza barre rovesciate.To list tasks running on DC01, you use the /S parameter and the computer name without backslashes. Ad esempio, tasklist /S DC01For example, tasklist /S DC01.

Nota

Prima di PowerShell v6, sc era un alias per il cmdlet Set-Content.Prior to PowerShell v6, sc was an alias for the Set-Content cmdlet. Pertanto, per eseguire il comando sc.exe in una versione di PowerShell precedente alla versione 6, è necessario includere il nome completo del file sc.exe inclusa l'estensione exe.Therefore, to run the sc.exe command in a version of PowerShell prior to v6, you must include the full filename sc.exe including the file extension exe.

I servizi e i processi sono esempi di elementi gestibili in un computer che hanno cicli di vita ben definiti.Services and processes are examples of manageable elements on a computer that have well-defined life cycles. Puoi avviare o arrestare i servizi e i processi oppure ottenere un elenco di tutti i servizi e i processi attualmente in esecuzione.You may start or stop services and processes, or get a list of all currently running services or processes. Anche se vi sono importanti distinzioni di natura tecnica, le operazioni eseguite su servizi e processi sono concettualmente identiche.Although there are important technical distinctions between them, the actions you perform on services and processes are conceptually the same. Inoltre, anche le scelte adottate per personalizzare un'operazione specificando parametri possono essere concettualmente simili.Furthermore, the choices we make to customize an action by specifying parameters may be conceptually similar as well.

Windows PowerShell sfrutta queste analogie per ridurre il numero di nomi diversi che è necessario ricordare per comprendere e usare i cmdlet.PowerShell exploits these similarities to reduce the number of distinct names you need to know to understand and use cmdlets.

Formato verbo-sostantivo per semplificare la memorizzazione dei cmdletCmdlets use verb-noun names to reduce command memorization

PowerShell usa un sistema di denominazione nel formato "verbo-sostantivo".PowerShell uses a "verb-noun" naming system. Ogni nome di cmdlet è costituito da un verbo standard separato con un trattino da un sostantivo.Each cmdlet name consists of a standard verb hyphenated with a specific noun. I verbi di PowerShell non sono sempre verbi inglesi, ma esprimono operazioni specifiche in PowerShell.PowerShell verbs are not always English verbs, but they express specific actions in PowerShell. I sostantivi sono parole con significati simili in qualsiasi altra lingua.Nouns are very much like nouns in any language. I sostantivi descrivono tipi specifici di oggetti importanti nell'amministrazione del sistema.They describe specific types of objects that are important in system administration. Osservando alcuni esempi, è facile notare come questi nomi in due parti semplifichino l'apprendimento.It's easy to demonstrate how these two-part names reduce learning effort by looking at a few examples.

PowerShell include un set consigliato di verbi standard.PowerShell has a recommended set of standard verbs. Ai sostantivi si applicano meno restrizioni, ma devono sempre descrivere l'elemento su cui agisce il verbo.Nouns are less restricted, but always describe what the verb acts upon. PowerShell include comandi come Get-Process, Stop-Process, Get-Service e Stop-Service.PowerShell has commands such as Get-Process, Stop-Process, Get-Service, and Stop-Service.

In questo esempio con due sostantivi e verbi la coerenza non semplifica troppo l'apprendimento.For this example of two nouns and verbs, consistency does not simplify learning that much. Estendendo questo elenco a un set standardizzato di 10 verbi e 10 sostantivi,Extend that list to a standardized set of 10 verbs and 10 nouns. i nomi da apprendere sono solo 20.Now you only have 20 words to understand. Tuttavia, questi termini possono essere combinati fino a formare 100 nomi di comando diversi.But those words can be combined to form 100 distinct command names.

È facile identificare l'operazione eseguita da un comando di PowerShell leggendone il nome.It's easy to understand what a PowerShell command does by reading its name. Il comando per arrestare un computer è Stop-Computer.The command to shut down a computer is Stop-Computer. Il comando per elencare tutti i computer in una rete è Get-Computer.The command to list all computers on a network is Get-Computer. Il comando per ottenere la data del sistema è Get-Date.The command to get the system date is Get-Date.

È possibile elencare tutti i comandi che includono un verbo specifico con il parametro Verb per Get-Command.You can list all commands that include a particular verb with the Verb parameter for Get-Command. Ad esempio, per visualizzare tutti i cmdlet che usano il verbo Get, digitare:For example, to see all cmdlets that use the verb Get, type:

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...
...

Usare il parametro Noun per visualizzare una famiglia di comandi che agiscono sullo stesso tipo di oggetto.Use the Noun parameter to see a family of commands that affect the same type of object. Ad esempio, eseguire il comando seguente per visualizzare i comandi disponibili per la gestione dei servizi:For example, run following command to see the commands available for managing services:

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...
...

Uso di parametri standard nei cmdletCmdlets use standard parameters

Come indicato in precedenza, i comandi usati nelle interfacce della riga di comando tradizionali non sempre hanno nomi di parametro coerenti.As noted earlier, commands used in traditional command-line interfaces don't always have consistent parameter names. I parametri sono spesso parole a un carattere o abbreviate semplici da digitare, ma che non sono facili da comprendere per i nuovi utenti.Parameters are often single-character or abbreviated words that are easy to type but aren't easily understood by new users.

A differenza di molte altre interfacce della riga di comando tradizionali, PowerShell elabora direttamente i parametri e usa questo accesso diretto ai parametri insieme a indicazioni rivolte agli sviluppatori per la standardizzazione dei nomi di parametro.Unlike most other traditional command-line interfaces, PowerShell processes parameters directly, and it uses this direct access to the parameters along with developer guidance to standardize parameter names. Queste indicazioni favoriscono ma non garantiscono la conformità di ogni cmdlet agli standard.This guidance encourages but does not guarantee that every cmdlet conforms to the standard.

PowerShell standardizza anche il separatore di parametri.PowerShell also standardizes the parameter separator. In un comando di PowerShell i nomi di parametro sono sempre preceduti da un carattere '-'.Parameter names always have a '-' prepended to them with a PowerShell command. Prendere in considerazione gli esempi seguenti:Consider the following example:

Get-Command -Name Clear-Host

Il nome del parametro è Name, ma viene digitato come -Name quando viene usato nella riga di comando come parametro.The parameter's name is Name, but it is typed as -Name when used on the command line as a parameter.

Ecco alcune delle caratteristiche generali relativi all'uso e ai nomi di parametro standard.Here are some of the general characteristics of the standard parameter names and usages.

Parametro Help (?)The Help parameter (?)

Quando si specifica il parametro -? in qualsiasi cmdlet, PowerShell visualizza informazioni della Guida per il cmdlet.When you specify the -? parameter on any cmdlet, PowerShell displays help for the cmdlet. Il cmdlet non viene eseguito.The cmdlet is not executed.

Parametri comuniCommon parameters

PowerShell include diversi parametri comuni.PowerShell has several common parameters. Questi parametri vengono controllati dal motore di PowerShell.These parameters are controlled by the PowerShell engine. I parametri comuni si comportano sempre allo stesso modo.Common parameters always behave the same way. I parametri comuni sono WhatIf, Confirm, Verbose, Debug, Warn, ErrorAction, ErrorVariable, OutVariable e OutBuffer.The common parameters are WhatIf, Confirm, Verbose, Debug, Warn, ErrorAction, ErrorVariable, OutVariable, and OutBuffer.

I cmdlet più importanti di PowerShell usano nomi standard per parametri simili.The PowerShell core cmdlets use standard names for similar parameters. Anche se l'uso di questi nomi standard non è obbligatorio, esistono linee guida esplicite per favorire la standardizzazione.The use of these standard names is not enforced, but there is explicit guidance to encourage standardization.

Ad esempio, il nome consigliato per un parametro che fa riferimento a un computer è ComputerName anziché Server, Host, System, Node o altre alternative comuni.For example, the recommended name for a parameter that refers to a computer is ComputerName, rather than Server, Host, System, Node, or some other common alternative. Altri importanti nomi di parametro consigliati sono Force, Exclude, Include, PassThru, Path e CaseSensitive.Other important recommended parameter names are Force, Exclude, Include, PassThru, Path, and CaseSensitive.