Capitolo 2 - Sistema della GuidaChapter 2 - The Help System

A due gruppi di professionisti IT è stato assegnato un test scritto senza avere accesso a un computer, per determinare il loro livello di competenza in PowerShell.Two groups of IT pros were given a written test without access to a computer to determine their skill level with PowerShell. I principianti di PowerShell sono stati inseriti in un gruppo e gli esperti in un altro.PowerShell beginners were placed in one group and experts in another. In base ai risultati del test, il livello di competenza tra i due gruppi non è sembrato molto diverso.Based on the results of the test, there didn't seem to be much difference in the skill level between the two groups. A entrambi i gruppi è stato assegnato un secondo test simile al primo,Both groups were given a second test similar to the first one. per il quale avevano a disposizione un computer con PowerShell, ma senza accesso a Internet.This time they were given access to a computer with PowerShell that didn't have access to the internet. I risultati del secondo test hanno mostrato una grande differenza nel livello di competenza tra i due gruppi.The results of the second test showed a huge difference in the skill level between the two groups. Gli esperti non sempre conoscono le risposte, ma sanno come trovarle.Experts don't always know the answers, but they know how to figure out the answers.

Qual è la differenza nei risultati del primo e del secondo test tra questi due gruppi?What was the difference in the results of the first and second test between these two groups?

Le differenze osservate in questi due test sono dovute al fatto che gli esperti non memorizzano come usare migliaia di comandi in PowerShell,The differences observed in these two tests were because experts don't memorize how to use thousands of commands in PowerShell. ma imparano a usare benissimo il sistema della Guida in PowerShell.They learn how to use the help system within PowerShell extremely well. In questo modo riescono a trovare i comandi necessari quando servono e a usarli una volta trovati.This allows them to find the necessary commands when needed and how to use those commands once they've found them.

Ho sentito Jeffrey Snover, l'inventore di PowerShell, raccontare più volte una storia simile.I've heard Jeffrey Snover, the inventor of PowerShell, tell a similar story a number of times.

Padroneggiare il sistema della Guida è fondamentale per riuscire a usare PowerShell in modo efficiente.Mastering the help system is the key to being successful with PowerShell.

IndividuabilitàDiscoverability

I comandi compilati di PowerShell sono detti cmdlet.Compiled commands in PowerShell are called cmdlets. Cmdlet si pronuncia "command-let" (non CMD-let).Cmdlet is pronounced "command-let" (not CMD-let). I nomi dei cmdlet hanno il formato di singoli comandi "Verbo-Sostantivo" per renderli facilmente individuabili.Cmdlets names have the form of singular "Verb-Noun" commands to make them easily discoverable. Ad esempio, il cmdlet per determinare quali processi sono in esecuzione è Get-Process e il cmdlet per recuperare un elenco di servizi e dei relativi stati è Get-Service.For example, the cmdlet for determining what processes are running is Get-Process and the cmdlet for retrieving a list of services and their statuses is Get-Service. In PowerShell sono disponibili altri tipi di comandi, ad esempio alias e funzioni, che verranno illustrati più avanti in questo libro.There are other types of commands in PowerShell such as aliases and functions that will be covered later in this book. Il termine comando di PowerShell è un termine generico usato spesso per indicare qualsiasi tipo di comando in PowerShell, indipendentemente dal fatto che si tratti o meno di un cmdlet, di una funzione o di un alias.The term PowerShell command is a generic term that's often used to refer to any type of command in PowerShell, regardless of whether or not it's a cmdlet, function, or alias.

I tre cmdlet principali di PowerShellThe Three Core Cmdlets in PowerShell

  • Get-Command
  • Get-Help
  • Get-Member (illustrato nel capitolo 3)Get-Member (covered in chapter 3)

Spesso mi viene chiesto come è possibile scoprire quali sono i comandi in PowerShell.One question I'm often asked is how do you figure out what the commands are in PowerShell? Per determinare i comandi, è possibile usare sia Get-Command che Get-Help.Both Get-Command and Get-Help can be used to determine the commands.

Get-HelpGet-Help

Get-Help è un comando che serve a più scopi.Get-Help is a multipurpose command. Get-Help consente di imparare a usare i comandi dopo averli trovati.Get-Help helps you learn how to use commands once you find them. Get-Help può essere usato anche per individuare i comandi, ma in modo diverso e meno diretto rispetto a Get-Command.Get-Help can also be used to help locate commands, but in a different and more indirect way when compared to Get-Command.

Quando Get-Help viene usato per individuare i comandi, cerca prima di tutto le corrispondenze con caratteri jolly dei nomi dei comandi in base all'input fornito.When Get-Help is used to locate commands, it first searches for wildcard matches of command names based on the provided input. Se non trova una corrispondenza, cerca negli argomenti della guida e, se non vengono trovate corrispondenze, viene restituito un errore.If it doesn't find a match, it searches through the help topics themselves, and if no match is found an error is returned. Contrariamente a quanto si pensa, Get-Help può essere usato per trovare i comandi per cui non sono disponibili argomenti nella Guida.Contrary to popular belief, Get-Help can be used to find commands that don't have help topics.

La prima cosa da sapere sul sistema della Guida in PowerShell è come usare il cmdlet Get-Help.The first thing you need to know about the help system in PowerShell is how to use the Get-Help cmdlet. Il comando seguente viene usato per visualizzare l'argomento della Guida per Get-Help.The following command is used to display the help topic for Get-Help.

Get-Help -Name Get-Help
Do you want to run Update-Help?
The Update-Help cmdlet downloads the most current Help files for Windows PowerShell
modules, and installs them on your computer. For more information about the Update-Help
cmdlet, see http://go.microsoft.com/fwlink/?LinkId=210614.
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

A partire da PowerShell versione 3, la Guida di PowerShell non è disponibile con il sistema operativo.Beginning with PowerShell version 3, PowerShell help doesn't ship with the operating system. La prima volta che si esegue Get-Help per un comando, viene visualizzato il messaggio precedente.The first time Get-Help is run for a command, the previous message is displayed. Se viene usata la funzione help o l'alias man invece del cmdlet Get-Help, questo prompt non viene visualizzato.If the help function or man alias is used instead of the Get-Help cmdlet, you don't receive this prompt.

Se si preme Y per rispondere affermativamente, viene eseguito il cmdlet Update-Help, che richiede l'accesso a Internet per impostazione predefinita.Answering yes by pressing Y runs the Update-Help cmdlet, which requires internet access by default. Y può essere digitato in maiuscolo o in minuscolo.Y can be specified in either upper or lower case.

Una volta scaricata la Guida e completato l'aggiornamento, viene restituito l'argomento della Guida per il comando specificato:Once the help is downloaded and the update is complete, the help topic is returned for the specified command:

Get-Help -Name Get-Help

Eseguire questo esempio nel computer, esaminare l'output e prendere nota di come vengono raggruppate le informazioni:Take a moment to run that example on your computer, review the output, and take note of how the information is grouped:

  • NAMENAME
  • RIEPILOGOSYNOPSIS
  • SYNTAXSYNTAX
  • DESCRIZIONEDESCRIPTION
  • COLLEGAMENTI CORRELATIRELATED LINKS
  • REMARKSREMARKS

Come si può vedere, gli argomenti della Guida possono contenere una grande quantità di informazioni e questo non è nemmeno l'intero argomento della Guida.As you can see, help topics can contain an enormous amount of information and this isn't even the entire help topic.

Sebbene non sia una modalità specifica di PowerShell, un parametro consente di fornire l'input a un comando.While not specific to PowerShell, a parameter is a way to provide input to a command. Get-Help presenta molti parametri che possono essere specificati per restituire l'intero argomento della Guida o un subset.Get-Help has many parameters that can be specified in order to return the entire help topic or a subset of it.

La sezione relativa alla sintassi dell'argomento della Guida illustrato nel set di risultati precedente elenca tutti i parametri per Get-Help.The syntax section of the help topic shown in the previous set of results lists all of the parameters for Get-Help. A prima vista, sembra che gli stessi parametri siano elencati per sei volte.At first glance, it appears the same parameters are listed six different times. Ognuno di questi diversi blocchi nella sezione della sintassi è un set di parametri.Each of those different blocks in the syntax section is a parameter set. Ciò significa che il cmdlet Get-Help ha sei diversi set di parametri.This means the Get-Help cmdlet has six different parameter sets. Se si osserva meglio, si noterà che almeno un parametro in ogni set di parametri è diverso.If you take a closer look, you'll notice that at least one parameter is different in each of the parameter sets.

I set di parametri si escludono a vicenda.Parameter sets are mutually exclusive. Quando viene usato un parametro univoco che esiste solo in uno dei set di parametri, è possibile usare solo i parametri contenuti all'interno di tale set di parametri.Once a unique parameter that only exists in one of the parameter sets is used, only parameters contained within that parameter set can be used. Ad esempio, non è stato possibile specificare contemporaneamente i parametri Full e Detailed perché si trovano in set di parametri diversi.For example, both the Full and Detailed parameters couldn't be specified at the same time because they are in different parameter sets.

Ognuno dei parametri seguenti si trova in set di parametri diversi:Each of the following parameters are in different parameter sets:

  • FullFull
  • DettagliatoDetailed
  • EsempiExamples
  • OnlineOnline
  • ParametroParameter
  • ShowWindowShowWindow

Il significato della sintassi criptica, ad esempio le parentesi quadre e angolari nella sezione della sintassi, verrà illustrato nell'appendice A di questo libro.All of the cryptic syntax such as square and angle brackets in the syntax section means something but will be covered in Appendix A of this book. Anche se è importante, spesso chi non ha familiarità con PowerShell e non lo usa quotidianamente trova difficile ricordare il significato di questo tipo di sintassi.While important, learning the cryptic syntax is often difficult to retain for someone who is new to PowerShell and may not use it everyday.

Per altre informazioni sulla sintassi criptica, vedere Appendice A.For more information to better understand the cryptic syntax, see Appendix A.

I principianti possono ottenere le stesse informazioni in un modo più semplice e in termini più comprensibili.For beginners, there's an easier way to figure out the same information except in plain language.

Quando viene specificato il parametro Full di Get-Help, viene restituito l'intero argomento della guida.When the Full parameter of Get-Help is specified, the entire help topic is returned.

Get-Help -Name Get-Help -Full

Eseguire questo esempio nel computer, esaminare l'output e prendere nota di come vengono raggruppate le informazioni:Take a moment to run that example on your computer, review the output, and take note of how the information is grouped:

  • NAMENAME
  • RIEPILOGOSYNOPSIS
  • SYNTAXSYNTAX
  • DESCRIZIONEDESCRIPTION
  • PARAMETERSPARAMETERS
  • INPUTINPUTS
  • OUTPUTOUTPUTS
  • NOTENOTES
  • ESEMPIEXAMPLES
  • COLLEGAMENTI CORRELATIRELATED LINKS

Si noti che l'uso del parametro Full ha restituito diverse sezioni aggiuntive, una delle quali è la sezione PARAMETERS che offre più informazioni della sezione criptica SYNTAX.Notice that using the Full parameter returned several additional sections, one of which is the PARAMETERS section that provides more information than the cryptic SYNTAX section.

Full è un parametro opzionale.The Full parameter is a switch parameter. Un parametro che non richiede un valore è detto parametro opzionale.A parameter that doesn't require a value is called a switch parameter. Quando viene specificato un parametro opzionale, il valore è true e, in caso contrario, il valore è false.When a switch parameter is specified, its value is true and when it's not, its value is false.

Se si è seguito questo capitolo usando la console di PowerShell, si sarà notato che il comando precedente per visualizzare l'argomento della Guida completo per Get-Help è stato visualizzato tanto velocemente da non riuscire a leggerlo.If you've been working through this chapter in the PowerShell console, you noticed that the previous command to display the full help topic for Get-Help flew by on the screen without giving you a chance to read it. C'è una soluzione migliore.There's a better way.

Help è una funzione che invia tramite pipe Get-Help a una funzione denominata more, che è un wrapper per il file eseguibile more.comin Windows.Help is a function that pipes Get-Help to a function named more, which is a wrapper for the more.com executable file in Windows. Nella console di PowerShell help restituisce una pagina della Guida alla volta.In the PowerShell console, help provides one page of help at a time. In ISE funziona esattamente come Get-Help.In the ISE, it works the same way as Get-Help. Il mio consigliò è di usare la funzione help invece del cmdlet Get-Help perché offre un'esperienza migliore e richiede di digitare meno codice.My recommendation is to use the help function instead of the Get-Help cmdlet since it provides a better experience and it's less to type.

Digitare meno codice, tuttavia, non è sempre la cosa migliore.Less typing isn't always a good thing, however. Per salvare i comandi come script o condividerli con altri utenti, assicurarsi di usare nomi di cmdlet e parametri completi.If you're going to save your commands as a script or share them with someone else, be sure to use full cmdlet and parameter names. I nomi completi sono più facili da comprendere perché sono autodocumentati.The full names are self-documenting, which makes them easier to understand. Si pensi alla prossima persona che dovrà leggere e comprendere i comandi.Think about the next person that has to read and understand your commands. Potrebbe essere chiunque.It could be you. I colleghi e il futuro stesso ne saranno grati.Your coworkers and future self will thank you.

Provare a eseguire i comandi seguenti nella console di PowerShell sul computer dell'ambiente lab Windows 10.Try running the following commands in the PowerShell console on your Windows 10 lab environment computer.

Get-Help -Name Get-Help -Full
help -Name Get-Help -Full
help Get-Help -Full

Si notano differenze nell'output dei comandi elencati in precedenza quando sono stati eseguiti nel computer dell'ambiente lab Windows 10?Did you notice any differences in the output from the previously listed commands when you ran them on your Windows 10 lab environment computer?

Non esistono differenze se non che le ultime due opzioni restituiscono i risultati una pagina alla volta.There aren't any differences other than the last two options return the results one page at a time. La BARRA SPAZIATRICE viene usata per visualizzare la pagina successiva del contenuto quando si usa la funzione Help e CTRL+C annulla i comandi in esecuzione nella console di PowerShell.The spacebar is used to display the next page of content when using the Help function and Ctrl+C cancels commands that are running in the PowerShell console.

Il primo esempio usa il cmdlet Get-Help, il secondo usa la funzione Help e il terzo omette il parametro Name quando si usa la funzione Help.The first example uses the Get-Help cmdlet, the second uses the Help function, and the third omits the Name parameter when using the Help function. Name è un parametro posizionale e in questo esempio viene usato in base alla posizione.Name is a positional parameter and it's being used positionally in that example. Ciò significa che il valore può essere specificato senza specificare il nome del parametro, purché il valore stesso sia specificato nella posizione corretta.This means the value can be specified without specifying the parameter name, as long as the value itself is specified in the correct position. Per sapere in quale posizione specificare il valore,How did I know what position to specify the value in? ho letto la Guida, come illustrato nell'esempio seguente.By reading the help as shown in the following example.

help Get-Help -Parameter Name
-Name <String>
    Gets help about the specified command or concept. Enter the name of a cmdlet, function,
    provider, script, or workflow, such as Get-Member, a conceptual article name, such as
    about_Objects, or an alias, such as ls. Wildcard characters are permitted in cmdlet and
    provider names, but you can't use wildcard characters to find the names of function help and
    script help articles.

    To get help for a script that isn't located in a path that's listed in the $env:Path
    environment variable, type the script's path and file name.

    If you enter the exact name of a help article, Get-Help displays the article contents.

    If you enter a word or word pattern that appears in several help article titles, Get-Help
    displays a list of the matching titles.

    If you enter a word that doesn't match any help article titles, Get-Help displays a list of
    articles that include that word in their contents.

    The names of conceptual articles, such as about_Objects, must be entered in English, even in
    non-English versions of PowerShell.

    Required?                    false
    Position?                    0
    Default value                None
    Accept pipeline input?       True (ByPropertyName)
    Accept wildcard characters?  true

Si noti che nell'esempio precedente il parametro Parameter è stato usato con la funzione Help per restituire solo le informazioni dell'argomento della Guida relativo al parametro Name.Notice that in the previous example, the Parameter parameter was used with the Help function to only return information from the help topic for the Name parameter. È molto più veloce che provare a esaminare manualmente un argomento della Guida che a volte può essere di centinaia di pagine.This is much more concise than trying to manually sift through what sometimes seems like a hundred page help topic.

In base a tali risultati, si può vedere che il parametro Name è posizionale e deve essere specificato nella posizione zero (la prima posizione) se usato in base alla posizione.Based on those results, you can see that the Name parameter is positional and must be specified in position zero (the first position) when used positionally. L'ordine in cui sono specificati i parametri non è rilevante se è specificato il parametro name.The order that parameters are specified in doesn't matter if the parameter name is specified.

Un'altra importante informazione è che il tipo di dati previsto per il valore del parametro Name è una singola stringa, come indicato da <String>.One other important piece of information is that the Name parameter expects the datatype for its value to be a single string, which is denoted by <String>. Se venissero accettate più stringhe, il tipo di dati sarebbe elencato come <String[]>.If it accepted multiple strings, the datatype would be listed as <String[]>.

In alcuni casi semplicemente non si vuole visualizzare l'intero argomento della Guida per un comando.Sometimes you simply don't want to display the entire help topic for a command. Oltre a Full , esistono altri parametri che possono essere specificati con Get-Help o Help.There are a number of other parameters besides Full that can be specified with Get-Help or Help. Provare a eseguire i comandi seguenti sul computer dell'ambiente lab Windows 10:Try running the following commands on your Windows 10 lab environment computer:

Get-Help -Name Get-Command -Full
Get-Help -Name Get-Command -Detailed
Get-Help -Name Get-Command -Examples
Get-Help -Name Get-Command -Online
Get-Help -Name Get-Command -Parameter Noun
Get-Help -Name Get-Command -ShowWindow

In genere uso help <command name> con il parametro Full o Online.I typically use help <command name> with the Full or Online parameter. Se mi interessano solo gli esempi, userò il parametro Examples e se mi interessa solo un parametro specifico, userò il parametro Parameter.If I'm only interested in the examples, I'll use the Examples parameter and if I'm only interested in a specific parameter, I'll use the Parameter parameter. Il parametro ShowWindow apre l'argomento della Guida in una finestra di ricerca separata che può essere visualizzata su un altro monitor, se disponibile.The ShowWindow parameter opens the help topic in a separate searchable window that can be placed on a different monitor if you have multiple monitors. Ho evitato il parametro ShowWindow perché a causa di un bug noto non viene visualizzato l'intero argomento della Guida.I've avoided the ShowWindow parameter because there's a known bug where it doesn't display the entire help topic.

Per visualizzare la Guida in una finestra separata, il mio consiglio è di usare il parametro Online o di usare il parametro Full e di inviare tramite pipe i risultati a Out-GridView, come illustrato nell'esempio seguente.If you want help in a separate window, my recommendation is to either use the Online parameter or use the Full parameter and pipe the results to Out-GridView, as shown in the following example.

help Get-Command -Full | Out-GridView

Sia il cmdlet Out-GridView che il parametro ShowWindow del cmdlet Get-Help richiedono un sistema operativo con una GUI (interfaccia utente grafica).Both the Out-GridView cmdlet and the ShowWindow parameter of the Get-Help cmdlet require an operating system with a GUI (Graphical User Interface). Verrà generato un messaggio di errore se si prova a usarne uno in Windows Server installato con l'opzione di installazione Server Core (senza GUI).They will generate an error message if you attempt to use either of them on Windows Server that's been installed using the server core (no-GUI) installation option.

Per usare Get-Help per trovare i comandi, usare il carattere jolly asterisco (*) con il parametro Name.To use Get-Help to find commands, use the asterisk (*) wildcard character with the Name parameter. Specificare un termine in cui cercare i comandi come valore per il parametro Name , come illustrato nell'esempio seguente.Specify a term that you're searching for commands on as the value for the Name parameter as shown in the following example.

help *process*
Name                              Category  Module                    Synopsis
----                              --------  ------                    --------
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Connects to and ...
Exit-PSHostProcess                Cmdlet    Microsoft.PowerShell.Core Closes an intera...
Get-PSHostProcessInfo             Cmdlet    Microsoft.PowerShell.Core
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Debugs one or mo...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Gets the process...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Starts one or mo...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Stops one or mor...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Waits for the pr...
Get-AppvVirtualProcess            Function  AppvClient                ...
Start-AppvVirtualProcess          Function  AppvClient                ...

Nell'esempio precedente i caratteri jolly * non sono obbligatori e, anche omettendoli, si ottiene lo stesso risultato.In the previous example, the * wildcard characters are not required and omitting them produces the same result. Get-Help aggiunge automaticamente i caratteri jolly in background.Get-Help automatically adds the wildcard characters behind the scenes.

help process

Il comando precedente produce gli stessi risultati ottenuti specificando il carattere jolly * a ogni fine del processo.The previous command produces the same results as specifying the * wildcard character on each end of process.

Preferisco aggiungerli perché questa opzione funziona sempre nello stesso modo.I prefer to add them since that's the option that always works consistently. In caso contrario, sono necessari in determinati scenari e non in altri.Otherwise, they are required in certain scenarios and not others. Non appena si aggiunge un carattere jolly all'interno del valore, non viene più aggiunto automaticamente in background al valore specificato.As soon as you add a wildcard character in the middle of the value, they're no longer automatically added behind the scenes to the value you specified.

help pr*cess

Tale comando non restituisce alcun risultato, a meno che il carattere jolly * non venga aggiunto all'inizio, alla fine o sia all'inizio che alla fine di pr*cess.No results are returned by that command unless the * wildcard character is added to the beginning, end, or both the beginning and end of pr*cess.

Se il valore specificato inizia con un trattino, viene generato un errore perché PowerShell lo interpreta come nome di parametro, ma non esiste un nome di parametro come questo per il cmdlet Get-Help.If the value you specified begins with a dash, then an error is generated because PowerShell interprets it as a parameter name and no such parameter name exists for the Get-Help cmdlet.

help -process

Se si sta provando a cercare i comandi che terminano con -process, è sufficiente aggiungere il carattere jolly * all'inizio del valore.If what you're attempting to look for are commands that end with -process, you only need to add the * wildcard character to the beginning of the value.

help *-process

Quando si cercano i comandi di PowerShell con Get-Help, è meglio essere un po' più generici invece che troppo specifici riguardo ciò che si sta cercando.When searching for PowerShell commands with Get-Help, you want to be a little more vague instead of being too specific with what you're searching for.

La ricerca di process in precedenza ha trovato solo i comandi che contenevano process nel nome del comando e ha restituito solo tali risultati.Searching for process earlier found only commands that contained process in the name of the command and returned only those results. Quando Get-Help viene usato per cercare processes, non trova corrispondenze per i nomi dei comandi, quindi esegue una ricerca in ogni argomento della Guida di PowerShell nel sistema e restituisce tutte le corrispondenze trovate.When Get-Help is used to search for processes, it doesn't find any matches for command names, so it performs a search of every help topic in PowerShell on your system and returns any matches it finds. In questo modo viene restituito un numero elevato di risultati.This causes it to return an enormous number of results.

Get-Help processes
Name                              Category  Module                    Synopsis
----                              --------  ------                    --------
Disconnect-PSSession              Cmdlet    Microsoft.PowerShell.Core Disconnects from...
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Connects to and ...
ForEach-Object                    Cmdlet    Microsoft.PowerShell.Core Performs an oper...
Get-PSSessionConfiguration        Cmdlet    Microsoft.PowerShell.Core Gets the registe...
New-PSTransportOption             Cmdlet    Microsoft.PowerShell.Core Creates an objec...
Out-Host                          Cmdlet    Microsoft.PowerShell.Core Sends output to ...
Where-Object                      Cmdlet    Microsoft.PowerShell.Core Selects objects ...
Clear-Variable                    Cmdlet    Microsoft.PowerShell.U... Deletes the valu...
Compare-Object                    Cmdlet    Microsoft.PowerShell.U... Compares two set...
Convert-String                    Cmdlet    Microsoft.PowerShell.U... Formats a string...
ConvertFrom-Csv                   Cmdlet    Microsoft.PowerShell.U... Converts object ...
ConvertTo-Html                    Cmdlet    Microsoft.PowerShell.U... Converts Microso...
ConvertTo-Xml                     Cmdlet    Microsoft.PowerShell.U... Creates an XML-b...
Debug-Runspace                    Cmdlet    Microsoft.PowerShell.U... Starts an intera...
Export-Csv                        Cmdlet    Microsoft.PowerShell.U... Converts objects...
Export-FormatData                 Cmdlet    Microsoft.PowerShell.U... Saves formatting...
Format-List                       Cmdlet    Microsoft.PowerShell.U... Formats the outp...
Format-Table                      Cmdlet    Microsoft.PowerShell.U... Formats the outp...
Get-Random                        Cmdlet    Microsoft.PowerShell.U... Gets a random nu...
Get-Unique                        Cmdlet    Microsoft.PowerShell.U... Returns unique i...
Group-Object                      Cmdlet    Microsoft.PowerShell.U... Groups objects t...
Import-Clixml                     Cmdlet    Microsoft.PowerShell.U... Imports a CLIXML...
Import-Csv                        Cmdlet    Microsoft.PowerShell.U... Creates table-li...
Measure-Object                    Cmdlet    Microsoft.PowerShell.U... Calculates the n...
Out-File                          Cmdlet    Microsoft.PowerShell.U... Sends output to ...
Out-GridView                      Cmdlet    Microsoft.PowerShell.U... Sends output to ...
Select-Object                     Cmdlet    Microsoft.PowerShell.U... Selects objects ...
Set-Variable                      Cmdlet    Microsoft.PowerShell.U... Sets the value o...
Sort-Object                       Cmdlet    Microsoft.PowerShell.U... Sorts objects by...
Tee-Object                        Cmdlet    Microsoft.PowerShell.U... Saves command ou...
Trace-Command                     Cmdlet    Microsoft.PowerShell.U... Configures and s...
Write-Output                      Cmdlet    Microsoft.PowerShell.U... Sends the specif...
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Debugs one or mo...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Gets the process...
Get-WmiObject                     Cmdlet    Microsoft.PowerShell.M... Gets instances o...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Starts one or mo...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Stops one or mor...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Waits for the pr...
Get-Counter                       Cmdlet    Microsoft.PowerShell.D... Gets performance...
Invoke-WSManAction                Cmdlet    Microsoft.WSMan.Manage... Invokes an actio...
Remove-WSManInstance              Cmdlet    Microsoft.WSMan.Manage... Deletes a manage...
Get-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Displays managem...
New-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Creates a new in...
Set-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Modifies the man...
about_Arithmetic_Operators        HelpFile                            Describes the op...
about_Arrays                      HelpFile                            Describes arrays...
about_Debuggers                   HelpFile                            Describes the Wi...
about_Execution_Policies          HelpFile                            Describes the Wi...
about_ForEach-Parallel            HelpFile                            Describes the Fo...
about_Foreach                     HelpFile                            Describes a lang...
about_Functions                   HelpFile                            Describes how to...
about_Language_Keywords           HelpFile                            Describes the ke...
about_Methods                     HelpFile                            Describes how to...
about_Objects                     HelpFile                            Provides essenti...
about_Parallel                    HelpFile                            Describes the Pa...
about_Pipelines                   HelpFile                            Combining comman...
about_Preference_Variables        HelpFile                            Variables that c...
about_Remote                      HelpFile                            Describes how to...
about_Remote_Output               HelpFile                            Describes how to...
about_Sequence                    HelpFile                            Describes the Se...
about_Session_Configuration_Files HelpFile                            Describes sessio...
about_Variables                   HelpFile                            Describes how va...
about_Windows_PowerShell_5.0      HelpFile                            Describes new fe...
about_WQL                         HelpFile                            Describes WMI Qu...
about_WS-Management_Cmdlets       HelpFile                            Provides an over...
about_ForEach-Parallel            HelpFile                            Describes the Fo...
about_Parallel                    HelpFile                            Describes the Pa...
about_Sequence                    HelpFile                            Describes the Se...

Dopo aver Help per cercare process, sono stati restituiti 10 risultati e, dopo averlo usato per cercare processes, sono stati restituiti 68 risultati.Using Help to search for process returned 10 results and using it to search for processes returned 68 results. Se viene trovato un solo risultato, verrà visualizzato l'argomento stesso della Guida invece che un elenco di comandi.If only one result is found, the help topic itself will be displayed instead of a list of commands.

get-help *hotfix*
NAME
    Get-HotFix

SYNOPSIS
    Gets the hotfixes that have been applied to the local and remote computers.


SYNTAX
    Get-HotFix [-ComputerName <String[]>] [-Credential <PSCredential>] [-Description
    <String[]>] [<CommonParameters>]

    Get-HotFix [[-Id] <String[]>] [-ComputerName <String[]>] [-Credential
    <PSCredential>] [<CommonParameters>]


DESCRIPTION
    The Get-Hotfix cmdlet gets hotfixes (also called updates) that have been installed
    on either the local computer (or on specified remote computers) by Windows Update,
    Microsoft Update, or Windows Server Update Services; the cmdlet also gets hotfixes
    or updates that have been installed manually by users.


RELATED LINKS
    Online Version: http://go.microsoft.com/fwlink/?LinkId=821586
    Win32_QuickFixEngineering http://go.microsoft.com/fwlink/?LinkID=145071
    Get-ComputerRestorePoint
    Add-Content

REMARKS
    To see the examples, type: "get-help Get-HotFix -examples".
    For more information, type: "get-help Get-HotFix -detailed".
    For technical information, type: "get-help Get-HotFix -full".
    For online help, type: "get-help Get-HotFix -online"

A questo punto, si sfaterà il mito che Help in PowerShell possa trovare solo comandi che hanno argomenti della Guida.Now to debunk the myth that Help in PowerShell can only find commands that have help topics.

help *more*
NAME
    more

SYNTAX
    more [[-paths] <string[]>]


ALIASES
    None


REMARKS
    None

Si noti che nell'esempio precedente more non ha un argomento della Guida, ma il sistema Help in PowerShell è riuscito a trovarlo.Notice in the previous example that more doesn't have a help topic, yet the Help system in PowerShell was able to find it. Ha trovato solo una corrispondenza e ha restituito le informazioni sulla sintassi di base che verranno visualizzate quando un comando non ha un argomento della Guida.It only found one match and returned the basic syntax information that you'll see when a command doesn't have a help topic.

PowerShell contiene numerosi argomenti della Guida concettuali (About).PowerShell contains numerous conceptual (About) help topics. Il comando seguente può essere usato per restituire un elenco di tutti gli argomenti della Guida About nel sistema.The following command can be used to return a list of all About help topics on your system.

help About_*

Se si limitano i risultati a un singolo argomento About della Guida, viene visualizzato l'argomento della Guida effettivo invece di restituire un elenco.Limiting the results to one single About help topic displays the actual help topic instead of returning a list.

help about_Updatable_Help

Il sistema della Guida in PowerShell deve essere aggiornato perché siano presenti gli argomenti della Guida About.The help system in PowerShell has to be updated in order for the About help topics to be present. Se per qualche motivo l'aggiornamento iniziale del sistema della Guida non è riuscito nel computer, i file non saranno disponibili fino a quando il cmdlet Update-Help non sarà stato eseguito correttamente.If for some reason the initial update of the help system failed on your computer, the files will not be available until the Update-Help cmdlet has been run successfully.

Get-CommandGet-Command

Get-Command è pensato per facilitare l'individuazione di comandi.Get-Command is designed to help you locate commands. L'esecuzione di Get-Command senza parametri restituisce un elenco di tutti i comandi nel sistema.Running Get-Command without any parameters returns a list of all the commands on your system. L'esempio seguente illustra l'uso del cmdlet Get-Command per determinare i comandi esistenti per la gestione dei processi:The following example demonstrates using the Get-Command cmdlet to determine what commands exist for working with processes:

Get-Command -Noun Process
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Debug-Process                                      3.1.0.0    Microsof...
Cmdlet          Get-Process                                        3.1.0.0    Microsof...
Cmdlet          Start-Process                                      3.1.0.0    Microsof...
Cmdlet          Stop-Process                                       3.1.0.0    Microsof...
Cmdlet          Wait-Process                                       3.1.0.0    Microsof...

Nell'esempio precedente, in cui è stato eseguito Get-Command, si noti che è stato usato il parametro Noun e che è stato specificato Process come valore del parametro Noun.Notice in the previous example where Get-Command was run, the Noun parameter is used and Process is specified as the value for the Noun parameter. E se non si sapesse come usare il cmdlet Get-Command?What if you didn't know how to use the Get-Command cmdlet? Si potrebbe usare Get-Help per visualizzare l'argomento della Guida relativo a Get-Command.You could use Get-Help to display the help topic for Get-Command.

I parametri Name , Noun e Verb accettano i caratteri jolly.The Name , Noun , and Verb parameters accept wildcards. L'esempio seguente illustra l'uso dei caratteri jolly con il parametro Name :The following example shows wildcards being used with the Name parameter:

Get-Command -Name *service*
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Get-NetFirewallServiceFilter                       2.0.0.0    NetSecurity
Function        Set-NetFirewallServiceFilter                       2.0.0.0    NetSecurity
Cmdlet          Get-Service                                        3.1.0.0    Microsof...
Cmdlet          New-Service                                        3.1.0.0    Microsof...
Cmdlet          New-WebServiceProxy                                3.1.0.0    Microsof...
Cmdlet          Restart-Service                                    3.1.0.0    Microsof...
Cmdlet          Resume-Service                                     3.1.0.0    Microsof...
Cmdlet          Set-Service                                        3.1.0.0    Microsof...
Cmdlet          Start-Service                                      3.1.0.0    Microsof...
Cmdlet          Stop-Service                                       3.1.0.0    Microsof...
Cmdlet          Suspend-Service                                    3.1.0.0    Microsof...
Application     AgentService.exe                                   10.0.14... C:\Windo...
Application     SensorDataService.exe                              10.0.14... C:\Windo...
Application     services.exe                                       10.0.14... C:\Windo...
Application     services.msc                                       0.0.0.0    C:\Windo...
Application     TieringEngineService.exe                           10.0.14... C:\Windo...

Non amo particolarmente usare i caratteri jolly con il parametro Name di Get-Command perché restituisce anche file eseguibili che non sono comandi nativi di PowerShell.I'm not a fan of using wildcards with the Name parameter of Get-Command since it also returns executable files that are not native PowerShell commands.

Se si vogliono usare i caratteri jolly con il parametro Name , consiglio di limitare i risultati con il parametro CommandType.If you are going to use wildcard characters with the Name parameter, I recommend limiting the results with the CommandType parameter.

Get-Command -Name *service* -CommandType Cmdlet, Function, Alias

Un'opzione migliore consiste nell'usare il parametro Verb o Noun oppure entrambi perché solo i comandi di PowerShell hanno sia verbi che sostantivi.A better option is to use either the Verb or Noun parameter or both of them since only PowerShell commands have both verbs and nouns.

Se si è riscontrato un errore in un argomento della Guida,Found something wrong with a help topic? ora gli argomenti della Guida per PowerShell sono open source e disponibili nel repository PowerShell-Docs su GitHub.The good news is the help topics for PowerShell have been open-sourced and available in the PowerShell-Docs repository on GitHub. È possibile dare il proprio contributo correggendo le informazioni non corrette.Pay it forward by not only fixing the incorrect information for yourself, but everyone else as well. È sufficiente creare una copia tramite fork del repository della documentazione di PowerShell su GitHub, aggiornare l'argomento della Guida e inviare una richiesta pull.Simply fork the PowerShell documentation repository on GitHub, update the help topic, and submit a pull request. Una volta accettata la richiesta pull, la documentazione corretta è disponibile per tutti.Once the pull request is accepted, the corrected documentation is available for everyone.

Aggiornamento della GuidaUpdating Help

La copia locale degli argomenti della Guida di PowerShell è stata aggiornata in precedenza, la prima volta che è stata richiesta la Guida per un comando.The local copy of the PowerShell help topics was previously updated the first-time help on a command was requested. È consigliabile aggiornare periodicamente il sistema della Guida perché è possibile che siano disponibili nuovi aggiornamenti al contenuto della Guida.It's recommended to periodically update the help system because there can be updates to the help content from time to time. Il cmdlet Update-Help viene usato per aggiornare gli argomenti della Guida.The Update-Help cmdlet is used to update the help topics. Richiede l'accesso a Internet per impostazione predefinita e per consentire l'esecuzione di PowerShell con privilegi elevati come amministratore.It requires internet access by default and for you to be running PowerShell elevated as an administrator.

Update-Help
Update-Help : Failed to update Help for the module(s) 'BitsTransfer' with UI culture(s)
{en-US} : The value of the HelpInfoUri key in the module manifest must resolve to a
container or root URL on a website where the help files are stored. The HelpInfoUri
'https://technet.microsoft.com/en-us/library/dd819413.aspx' does not resolve to a
container.
At line:1 char:1
+ Update-Help
+
    + CategoryInfo          : InvalidOperation: (:) [Update-Help], Exception
    + FullyQualifiedErrorId : InvalidHelpInfoUri,Microsoft.PowerShell.Commands.UpdateHel
   pCommand

Update-Help : Failed to update Help for the module(s) 'NetworkControllerDiagnostics,
StorageReplica' with UI culture(s) {en-US} : Unable to retrieve the HelpInfo XML file
for UI culture en-US. Make sure the HelpInfoUri property in the module manifest is valid
or check your network connection and then try the command again.
At line:1 char:1
+ Update-Help
+
    + CategoryInfo          : ResourceUnavailable: (:) [Update-Help], Exception
    + FullyQualifiedErrorId : UnableToRetrieveHelpInfoXml,Microsoft.PowerShell.Commands.
   UpdateHelpCommand

Alcuni moduli hanno restituito errori, il che non è insolito.A couple of the modules returned errors, which is not uncommon. Se il computer non ha accesso a Internet, è possibile usare il cmdlet Save-Help in un altro computer con accesso a Internet per salvare prima le informazioni aggiornate della Guida in una condivisione file in rete e quindi usare il parametro SourcePath di Update-Help per specificare questo percorso di rete per gli argomenti della Guida.If the machine didn't have internet access, you could use the Save-Help cmdlet on another machine that does have internet access to first save the updated help information to a file share on your network and then use the SourcePath parameter of Update-Help to specify this network location for the help topics.

Valutare l'opportunità di configurare un'attività pianificata o di aggiungere una logica allo script del profilo in PowerShell per aggiornare periodicamente il contenuto della Guida nel computer.Consider setting up a scheduled task or adding some logic to your profile script in PowerShell to periodically update the help content on your computer. Gli script del profilo verranno illustrati in uno dei prossimi capitoli.Profile scripts will be discussed in an upcoming chapter.

SummarySummary

In questo capitolo si è appreso come trovare i comandi sia con Get-Help che con Get-Command.In this chapter you've learned how to find commands with both Get-Help and Get-Command. Si è appreso come usare il sistema della Guida per capire come usare i comandi una volta trovati.You've learned how to use the help system to figure out how to use commands once you find them. Si è anche appreso come aggiornare il contenuto degli argomenti della Guida quando sono disponibili aggiornamenti.You've also learned how to update the content of the help topics when updates are available.

La sfida che propongo consiste nell'imparare un comando di PowerShell al giorno.My challenge to you is to learn a PowerShell command a day.

Get-Command | Get-Random | Get-Help -Full

VerificaReview

  1. Il parametro DisplayName di Get-Service è posizionale?Is the DisplayName parameter of Get-Service positional?
  2. Quanti set di parametri ha il cmdlet Get-Process?How many parameter sets does the Get-Process cmdlet have?
  3. Quali comandi di PowerShell sono disponibili per gestire i log eventi?What PowerShell commands exist for working with event logs?
  4. Qual è il comando di PowerShell per restituire un elenco dei processi di PowerShell in esecuzione nel computer?What is the PowerShell command for returning a list of PowerShell processes running on your computer?
  5. Come si aggiorna il contenuto della Guida di PowerShell archiviato nel computer?How do you update the PowerShell help content that's stored on your computer?

Per altre informazioni sugli argomenti trattati in questo capitolo, consiglio di leggere gli argomenti seguenti della Guida di PowerShell.If you want to know more information about the topics covered in this chapter, I recommend reading the following PowerShell help topics.

Nel capitolo successivo verrà illustrato il cmdlet Get-Member, oltre a oggetti, proprietà e metodi.In the next chapter, you'll learn about the Get-Member cmdlet as well as objects, properties, and methods.