Capitolo 2 - Sistema della Guida

In un esperimento progettato per valutare la competenza in PowerShell, due gruppi distinti di professionisti IT, principianti ed esperti, hanno ricevuto prima un esame scritto senza accesso a un computer. Sorprendentemente, i punteggi dei test hanno indicato competenze confrontabili in entrambi i gruppi. Un test successivo è stato quindi amministrato, mirroring il primo ma con una differenza fondamentale: i partecipanti hanno avuto accesso a un computer offline dotato di PowerShell. I risultati hanno rivelato un divario significativo di competenze tra i due gruppi questa volta.

Quali fattori hanno contribuito ai risultati osservati tra le due valutazioni?

Gli esperti non sempre conoscono le risposte, ma sanno come trovarle.

I risultati osservati nei risultati dei due test sono stati perché gli esperti non memorizzano migliaia di comandi di PowerShell. Al contrario, eccelle nell'uso del sistema della Guida all'interno di PowerShell, consentendo loro di individuare e imparare a usare i comandi quando necessario.

Diventare esperti nel sistema della Guida è la chiave per il successo con PowerShell.

Ho sentito Jeffrey Snover, creatore di PowerShell, condividere una storia simile in più occasioni.

Individuabilità

I comandi compilati in PowerShell sono noti come cmdlet, pronunciati come "command-let", non "CMD-let". La convenzione di denominazione per i cmdlet segue un formato verbo-sostantivo singolare per renderli facilmente individuabili. Ad esempio, Get-Process è il cmdlet per determinare quali processi sono in esecuzione ed Get-Service è il cmdlet per recuperare un elenco di servizi. Le funzioni, note anche come cmdlet script, e alias sono altri tipi di comandi di PowerShell descritti più avanti in questo libro. Il termine "comando di PowerShell" descrive qualsiasi comando in PowerShell, indipendentemente dal fatto che si tratti di un cmdlet, di una funzione o di un alias.

È anche possibile eseguire comandi nativi del sistema operativo da PowerShell, ad esempio programmi della riga di comando tradizionali come ping.exe e ipconfig.exe.

I tre cmdlet principali in PowerShell

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

Viene spesso chiesto: "Come si determinano i comandi in PowerShell?". Sia Get-Help che Get-Command sono risorse preziose per l'individuazione e la comprensione dei comandi in PowerShell.

Get-Help

La prima cosa da sapere sul sistema della Guida in PowerShell è come usare il Get-Help cmdlet .

Get-Help è un comando multiuso che consente di imparare a usare i comandi dopo averli trovate. È anche possibile usare Get-Help per individuare i comandi, ma in modo diverso e più indiretto rispetto a Get-Command.

Quando si usano Get-Help per individuare i comandi, inizialmente esegue una ricerca con caratteri jolly per i nomi dei comandi in base all'input. Se ciò non trova corrispondenze, esegue una ricerca full-text completa in tutti gli articoli della Guida di PowerShell nel sistema. Se questo non riesce a trovare risultati, restituisce un errore.

Ecco come usare Get-Help per visualizzare il contenuto della Guida per il Get-Help cmdlet .

Get-Help -Name Get-Help

A partire da PowerShell versione 3.0, il contenuto della Guida non viene fornito preinstallato con il sistema operativo. Quando si esegue Get-Help per la prima volta, un messaggio chiede se si desidera scaricare i file della Guida di PowerShell nel computer.

La risposta premendo Y esegue il Update-Help cmdlet, scaricando il contenuto della Guida.

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
https:/go.microsoft.com/fwlink/?LinkId=210614.
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):

Se non si riceve questo messaggio, eseguire Update-Help da una sessione di PowerShell con privilegi elevati in esecuzione come amministratore.

Al termine dell'aggiornamento, viene visualizzato l'articolo della Guida.

Per eseguire l'esempio nel computer, esaminare l'output e osservare come il sistema della Guida organizza le informazioni.

  • NOME
  • RIEPILOGO
  • SYNTAX
  • DESCRIZIONE
  • COLLEGAMENTI CORRELATI
  • REMARKS

Quando si esamina l'output, tenere presente che gli articoli della Guida contengono spesso una grande quantità di informazioni e ciò che viene visualizzato per impostazione predefinita non è l'intero articolo della Guida.

Parametri

Quando si esegue un comando in PowerShell, potrebbe essere necessario fornire informazioni aggiuntive o input al comando. I parametri consentono di specificare opzioni e argomenti che modificano il comportamento di un comando. La sezione SYNTAX di ogni articolo della Guida descrive i parametri disponibili per il comando.

Get-Help include diversi parametri che è possibile specificare per restituire l'intero articolo della Guida o un subset per un comando. Per visualizzare tutti i parametri disponibili per Get-Help, vedere la sezione SYNTAX del relativo articolo della Guida, come illustrato nell'esempio seguente.

...
SYNTAX
    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Full]
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] -Detailed
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] -Examples
    [-Functionality <System.String[]>] [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] -Online [-Path <System.String>] [-Role
    <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] -Parameter <System.String> [-Path <System.String>]
    [-Role <System.String[]>] [<CommonParameters>]

    Get-Help [[-Name] <System.String>] [-Category {Alias | Cmdlet | Provider
    | General | FAQ | Glossary | HelpFile | ScriptCommand | Function |
    Filter | ExternalScript | All | DefaultHelp | Workflow | DscResource |
    Class | Configuration}] [-Component <System.String[]>] [-Functionality
    <System.String[]>] [-Path <System.String>] [-Role <System.String[]>]
    -ShowWindow [<CommonParameters>]
...

Set di parametri

Quando si esamina la sezione SYNTAX per Get-Help, si noti che le informazioni sembrano essere ripetute sei volte. Ognuno di questi blocchi è un singolo set di parametri, che indica le caratteristiche del Get-Help cmdlet di sei set distinti di parametri. Un'occhiata più da vicino rivela che ogni set di parametri contiene almeno un parametro univoco, rendendolo diverso dagli altri.

I set di parametri si escludono a vicenda. Dopo aver specificato un parametro univoco che esiste solo in un set di parametri, PowerShell limita l'uso dei parametri contenuti all'interno di tale set di parametri. Ad esempio, non è possibile usare insieme i Get-Help parametri Full e Detailed perché appartengono a set di parametri diversi.

Ognuno dei parametri seguenti appartiene a un set di parametri diverso per il Get-Help cmdlet .

  • Completa
  • Dettagliate
  • Esempi
  • Online
  • Parametro
  • ShowWindow

Sintassi del comando

Se non si ha familiarità con PowerShell, comprendere le informazioni criptiche, caratterizzate da parentesi quadre e angolari, nella sezione SINTASSI potrebbe sembrare travolgente. Tuttavia, l'apprendimento di questi elementi di sintassi è essenziale per diventare esperti con PowerShell. Più frequentemente si usa il sistema della Guida di PowerShell, più facile diventa ricordare tutte le sfumature.

Visualizzare la sintassi del Get-EventLog cmdlet.

Get-Help Get-EventLog

L'output seguente illustra la parte pertinente dell'articolo della Guida.

...
SYNTAX
    Get-EventLog [-LogName] <System.String> [[-InstanceId]
    <System.Int64[]>] [-After <System.DateTime>] [-AsBaseObject] [-Before
    <System.DateTime>] [-ComputerName <System.String[]>] [-EntryType {Error
    | Information | FailureAudit | SuccessAudit | Warning}] [-Index
    <System.Int32[]>] [-Message <System.String>] [-Newest <System.Int32>]
    [-Source <System.String[]>] [-UserName <System.String[]>]
    [<CommonParameters>]

    Get-EventLog [-AsString] [-ComputerName <System.String[]>] [-List]
    [<CommonParameters>]
...

Le informazioni sulla sintassi includono coppie di parentesi quadre ([]). A seconda del loro utilizzo, queste parentesi quadre servono due scopi diversi.

  • Gli elementi racchiusi tra parentesi quadre sono facoltativi.
  • Un set vuoto di parentesi quadre che seguono un tipo di dati, ad esempio <string[]>, indica che il parametro può accettare più valori passati come matrice o oggetto raccolta.

Parametri posizionali

Alcuni cmdlet sono progettati per accettare parametri posizionali. I parametri posizionali consentono di specificare un valore senza specificare il nome del parametro. Quando si usa un parametro in modo posizionale, è necessario specificarne il valore nella posizione corretta nella riga di comando. È possibile trovare le informazioni posizionali per un parametro nella sezione PARAMETERS dell'articolo della Guida di un comando. Quando si specificano in modo esplicito i nomi dei parametri, è possibile usare i parametri in qualsiasi ordine.

Per il Get-EventLog cmdlet, il primo parametro nel primo set di parametri è LogName. LogName è racchiuso tra parentesi quadre, a indicare che si tratta di un parametro posizionale.

Get-EventLog [-LogName] <System.String>

Poiché LogName è un parametro posizionale, è possibile specificarlo in base al nome o alla posizione. In base alle parentesi angolari che seguono il nome del parametro, il valore per LogName deve essere una singola stringa. L'assenza di parentesi quadre che racchiudono sia il nome del parametro che il tipo di dati indicano che LogName è un parametro obbligatorio all'interno di questo set di parametri specifico.

Il secondo parametro nel set di parametri è InstanceId. Sia il nome del parametro che il tipo di dati sono interamente racchiusi tra parentesi quadre, che indica che InstanceId è un parametro facoltativo.

[[-InstanceId] <System.Int64[]>]

InstanceId ha inoltre una coppia di parentesi quadre, a indicare che si tratta di un parametro posizionale simile al parametro LogName. Dopo il tipo di dati, un set vuoto di parentesi quadre implica che InstanceId può accettare più valori.

Parametri opzionali

Un parametro che non richiede un valore è detto parametro opzionale. È possibile identificare facilmente i parametri switch perché non è presente alcun tipo di dati dopo il nome del parametro. Quando si specifica un parametro switch, il relativo valore è true. Quando non si specifica un parametro switch, il relativo valore è false.

Il secondo set di parametri include un parametro List , ovvero un parametro switch. Quando si specifica il parametro List , viene restituito un elenco di registri eventi nel computer locale.

[-List]

Approccio semplificato alla sintassi

Esiste un metodo più intuitivo per ottenere le stesse informazioni della sintassi dei comandi criptici per alcuni comandi, tranne in inglese normale. PowerShell restituisce l'articolo della Guida completo quando si usa Get-Help con il parametro Full , semplificando la comprensione dell'utilizzo di un comando.

Get-Help -Name Get-Help -Full

Per eseguire l'esempio nel computer, esaminare l'output e osservare come il sistema della Guida organizza le informazioni.

  • NOME
  • RIEPILOGO
  • SYNTAX
  • DESCRIZIONE
  • PARAMETERS
  • INPUT
  • OUTPUT
  • NOTE
  • ESEMPI
  • COLLEGAMENTI CORRELATI

Specificando il parametro Full con il Get-Help cmdlet , l'output include diverse sezioni aggiuntive. Tra queste sezioni, PARAMETERS spesso fornisce una spiegazione dettagliata per ogni parametro. Tuttavia, l'estensione di queste informazioni varia a seconda del comando specifico che si sta analizzando.

...
    -Detailed <System.Management.Automation.SwitchParameter>
        Adds parameter descriptions and examples to the basic help display.
        This parameter is effective only when the help files are installed
        on the computer. It has no effect on displays of conceptual ( About_
        ) help.

        Required?                    true
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false

    -Examples <System.Management.Automation.SwitchParameter>
        Displays only the name, synopsis, and examples. This parameter is
        effective only when the help files are installed on the computer. It
        has no effect on displays of conceptual ( About_ ) help.

        Required?                    true
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false

    -Full <System.Management.Automation.SwitchParameter>
        Displays the entire help article for a cmdlet. Full includes
        parameter descriptions and attributes, examples, input and output
        object types, and additional notes.

        This parameter is effective only when the help files are installed
        on the computer. It has no effect on displays of conceptual ( About_
        ) help.

        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       False
        Accept wildcard characters?  false
...

Quando è stato eseguito il comando precedente per visualizzare la Guida per il Get-Help comando, probabilmente si è notato che l'output è stato eseguito troppo rapidamente per leggerlo.

Se si usa la console di PowerShell, Terminale Windows o VS Code ed è necessario visualizzare un articolo della Guida, la help funzione può essere utile. Invia tramite pipe l'output di Get-Help a more.com, visualizzando una pagina di contenuto della Guida alla volta. È consigliabile usare la help funzione anziché il Get-Help cmdlet perché offre un'esperienza utente migliore ed è meno da digitare.

Nota

L'ISE non supporta l'uso more.comdi , quindi l'esecuzione help funziona allo stesso modo di Get-Help.

Eseguire ognuno dei comandi seguenti in PowerShell nel computer.

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

Sono state osservate variazioni nell'output quando sono stati eseguiti i comandi precedenti?

Nell'esempio precedente la prima riga usa il Get-Help cmdlet , la seconda usa la help funzione e la terza riga omette il parametro Name durante l'uso della help funzione . Poiché Name è un parametro posizionale, il terzo esempio sfrutta la posizione invece di indicare in modo esplicito il nome del parametro.

La differenza è che gli ultimi due comandi visualizzano l'output di una pagina alla volta. Quando si usa la help funzione, premere la barra spaziatrice per visualizzare la pagina successiva del contenuto o Q per uscire. Se è necessario terminare qualsiasi comando in esecuzione in modo interattivo in PowerShell, premere CTRL+C.

Per trovare rapidamente informazioni su un parametro specifico, usare il parametro Parameter . Questo approccio restituisce contenuto contenente solo le informazioni specifiche dei parametri, anziché l'intero articolo della Guida. Questo è il modo più semplice per trovare informazioni su un parametro specifico.

Nell'esempio seguente viene usata la help funzione con il parametro Parameter per restituire informazioni dall'articolo della Guida per il parametro Name di Get-Help.

help Get-Help -Parameter Name

Le informazioni della Guida indicano che il parametro Name è posizionale e deve essere specificato nella prima posizione (posizione zero) quando viene usato in modo posizionale.

-Name <System.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 any text that doesn't match any help article titles,
    `Get-Help` displays a list of articles that include that text 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

Il parametro Name prevede un valore stringa identificato dal <String> tipo di dati accanto al nome del parametro.

Esistono diversi altri parametri che è possibile specificare con Get-Help per restituire un subset di un articolo della Guida. Per vedere come funzionano, eseguire i comandi seguenti nel 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. Se si ha interesse solo negli esempi, usare il parametro Examples . Se si ha interesse solo per un parametro specifico, usare il parametro Parameter .

Quando si usa il parametro ShowWindow , viene visualizzato il contenuto della Guida in una finestra ricercabile separata. È possibile spostare tale finestra in un monitor diverso se sono presenti più monitor. Tuttavia, il parametro ShowWindow presenta un bug noto che potrebbe impedire la visualizzazione dell'intero articolo della Guida. Il parametro ShowWindow richiede anche un sistema operativo con interfaccia utente grafica (GUI). Restituisce un errore quando si tenta di usarlo in Windows Server Core.

Se si ha accesso a Internet, è possibile usare invece il parametro Online . Il parametro Online apre l'articolo della Guida nel Web browser predefinito. Il contenuto online è il contenuto più aggiornato. Il browser consente di cercare il contenuto della Guida e visualizzare altri articoli della Guida correlati.

Nota

Il parametro Online non è supportato per gli articoli About .

help Get-Command -Online

Ricerca di comandi con Get-Help

Per trovare i comandi con Get-Help, specificare un termine di ricerca racchiuso tra caratteri jolly asterisco (*) per il valore del parametro Name . Nell'esempio seguente viene utilizzato il parametro Name in modo posizionale.

help *process*
Name                              Category  Module                    Synops
----                              --------  ------                    ------
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Con...
Exit-PSHostProcess                Cmdlet    Microsoft.PowerShell.Core Clo...
Get-PSHostProcessInfo             Cmdlet    Microsoft.PowerShell.Core Get...
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Deb...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Get...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Sta...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Sto...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Wai...
Invoke-LapsPolicyProcessing       Cmdlet    LAPS                      Inv...
ConvertTo-ProcessMitigationPolicy Cmdlet    ProcessMitigations        Con...
Get-ProcessMitigation             Cmdlet    ProcessMitigations        Get...
Set-ProcessMitigation             Cmdlet    ProcessMitigations        Set...

In questo scenario non è necessario aggiungere i * caratteri jolly. Se Get-Help non riesce a trovare un comando corrispondente al valore specificato, esegue una ricerca full-text per tale valore. Nell'esempio seguente vengono generati gli stessi risultati della specifica del * carattere jolly in ogni estremità di process.

help process

Quando si specifica un carattere jolly all'interno del valore, Get-Help cerca solo i comandi che corrispondono al modello specificato. Non esegue una ricerca full-text. Il comando seguente non restituisce alcun risultato.

help pr*cess

PowerShell genera un errore se si specifica un valore che inizia con un trattino senza racchiuderlo tra virgolette perché lo interpreta come nome di parametro. Per il cmdlet non esiste alcun nome di Get-Help parametro di questo tipo.

help -process

Se si tenta di cercare i comandi che terminano con -process, è necessario aggiungere un * oggetto all'inizio del valore.

help *-process

Quando si cercano i comandi di PowerShell con Get-Help, è preferibile essere vaghi anziché troppo specifici.

Quando è stata eseguita la ricerca in process precedenza, i risultati hanno restituito solo i comandi inclusi process nel nome. Tuttavia, se si cerca processes, non trova corrispondenze per i nomi dei comandi. Come indicato in precedenza, quando la Guida non trova corrispondenze, esegue una ricerca full-text completa di ogni articolo della Guida nel sistema e restituisce tali risultati. Questo tipo di ricerca produce spesso più risultati del previsto, incluse le informazioni non rilevanti per l'utente.

help processes
Name                              Category  Module                    Synops
----                              --------  ------                    ------
Disconnect-PSSession              Cmdlet    Microsoft.PowerShell.Core Dis...
Enter-PSHostProcess               Cmdlet    Microsoft.PowerShell.Core Con...
ForEach-Object                    Cmdlet    Microsoft.PowerShell.Core Per...
Get-PSHostProcessInfo             Cmdlet    Microsoft.PowerShell.Core Get...
Get-PSSessionConfiguration        Cmdlet    Microsoft.PowerShell.Core Get...
New-PSSessionOption               Cmdlet    Microsoft.PowerShell.Core Cre...
New-PSTransportOption             Cmdlet    Microsoft.PowerShell.Core Cre...
Out-Host                          Cmdlet    Microsoft.PowerShell.Core Sen...
Start-Job                         Cmdlet    Microsoft.PowerShell.Core Sta...
Where-Object                      Cmdlet    Microsoft.PowerShell.Core Sel...
Debug-Process                     Cmdlet    Microsoft.PowerShell.M... Deb...
Get-Process                       Cmdlet    Microsoft.PowerShell.M... Get...
Get-WmiObject                     Cmdlet    Microsoft.PowerShell.M... Get...
Start-Process                     Cmdlet    Microsoft.PowerShell.M... Sta...
Stop-Process                      Cmdlet    Microsoft.PowerShell.M... Sto...
Wait-Process                      Cmdlet    Microsoft.PowerShell.M... Wai...
Clear-Variable                    Cmdlet    Microsoft.PowerShell.U... Del...
Convert-String                    Cmdlet    Microsoft.PowerShell.U... For...
ConvertFrom-Csv                   Cmdlet    Microsoft.PowerShell.U... Con...
ConvertFrom-Json                  Cmdlet    Microsoft.PowerShell.U... Con...
ConvertTo-Html                    Cmdlet    Microsoft.PowerShell.U... Con...
ConvertTo-Xml                     Cmdlet    Microsoft.PowerShell.U... Cre...
Debug-Runspace                    Cmdlet    Microsoft.PowerShell.U... Sta...
Export-Csv                        Cmdlet    Microsoft.PowerShell.U... Con...
Export-FormatData                 Cmdlet    Microsoft.PowerShell.U... Sav...
Format-List                       Cmdlet    Microsoft.PowerShell.U... For...
Format-Table                      Cmdlet    Microsoft.PowerShell.U... For...
Get-Unique                        Cmdlet    Microsoft.PowerShell.U... Ret...
Group-Object                      Cmdlet    Microsoft.PowerShell.U... Gro...
Import-Clixml                     Cmdlet    Microsoft.PowerShell.U... Imp...
Import-Csv                        Cmdlet    Microsoft.PowerShell.U... Cre...
Measure-Object                    Cmdlet    Microsoft.PowerShell.U... Cal...
Out-File                          Cmdlet    Microsoft.PowerShell.U... Sen...
Out-GridView                      Cmdlet    Microsoft.PowerShell.U... Sen...
Select-Object                     Cmdlet    Microsoft.PowerShell.U... Sel...
Set-Variable                      Cmdlet    Microsoft.PowerShell.U... Set...
Sort-Object                       Cmdlet    Microsoft.PowerShell.U... Sor...
Tee-Object                        Cmdlet    Microsoft.PowerShell.U... Sav...
Trace-Command                     Cmdlet    Microsoft.PowerShell.U... Con...
Write-Information                 Cmdlet    Microsoft.PowerShell.U... Spe...
Export-BinaryMiLog                Cmdlet    CimCmdlets                Cre...
Get-CimAssociatedInstance         Cmdlet    CimCmdlets                Ret...
Get-CimInstance                   Cmdlet    CimCmdlets                Get...
Import-BinaryMiLog                Cmdlet    CimCmdlets                Use...
Invoke-CimMethod                  Cmdlet    CimCmdlets                Inv...
New-CimInstance                   Cmdlet    CimCmdlets                Cre...
Remove-CimInstance                Cmdlet    CimCmdlets                Rem...
Set-CimInstance                   Cmdlet    CimCmdlets                Mod...
Compress-Archive                  Function  Microsoft.PowerShell.A... Cre...
Get-Counter                       Cmdlet    Microsoft.PowerShell.D... Get...
Invoke-WSManAction                Cmdlet    Microsoft.WSMan.Manage... Inv...
Remove-WSManInstance              Cmdlet    Microsoft.WSMan.Manage... Del...
Get-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Dis...
New-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Cre...
Set-WSManInstance                 Cmdlet    Microsoft.WSMan.Manage... Mod...
about_Arithmetic_Operators        HelpFile
about_Arrays                      HelpFile
about_Environment_Variables       HelpFile
about_Execution_Policies          HelpFile
about_Functions                   HelpFile
about_Jobs                        HelpFile
about_Logging                     HelpFile
about_Methods                     HelpFile
about_Objects                     HelpFile
about_Pipelines                   HelpFile
about_Preference_Variables        HelpFile
about_Remote                      HelpFile
about_Remote_Jobs                 HelpFile
about_Session_Configuration_Files HelpFile
about_Simplified_Syntax           HelpFile
about_Switch                      HelpFile
about_Variables                   HelpFile
about_Variable_Provider           HelpFile
about_Windows_Powershell_5.1      HelpFile
about_WQL                         HelpFile
about_WS-Management_Cmdlets       HelpFile
about_Foreach-Parallel            HelpFile
about_Parallel                    HelpFile
about_Sequence                    HelpFile

Quando è stata eseguita la ricerca di process, sono stati restituiti 12 risultati. Tuttavia, durante la ricerca processesdi , ha prodotto 78 risultati. Se la ricerca trova una sola corrispondenza, Get-Help visualizza il contenuto della Guida anziché elencare i risultati della ricerca.

help *hotfix*
NAME
    Get-HotFix

SYNOPSIS
    Gets the hotfixes that are installed on local or remote computers.


SYNTAX
    Get-HotFix [-ComputerName <System.String[]>] [-Credential
    <System.Management.Automation.PSCredential>] [-Description
    <System.String[]>] [<CommonParameters>]

    Get-HotFix [[-Id] <System.String[]>] [-ComputerName <System.String[]>]
    [-Credential <System.Management.Automation.PSCredential>]
    [<CommonParameters>]


DESCRIPTION
    > This cmdlet is only available on the Windows platform. The
    `Get-Hotfix` cmdlet uses the Win32_QuickFixEngineering WMI class to
    list hotfixes that are installed on the local computer or specified
    remote computers.


RELATED LINKS
    Online Version: https://video2.skills-academy.com/powershell/module/microsoft.
    powershell.management/get-hotfix?view=powershell-5.1&WT.mc_id=ps-gethelp
    about_Arrays
    Add-Content
    Get-ComputerRestorePoint
    Get-Credential
    Win32_QuickFixEngineering class

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"

È anche possibile trovare comandi che non contengono articoli della Guida con Get-Help, anche se questa funzionalità non è comunemente nota. La more funzione è uno dei comandi che non ha un articolo della Guida. Per confermare che è possibile trovare i comandi con Get-Help che non includono articoli della Guida, usare la help funzione per trovare more.

help *more*

La ricerca ha trovato una sola corrispondenza, quindi ha restituito le informazioni di base sulla sintassi visualizzate quando un comando non ha un articolo della Guida.

NAME
    more

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

ALIASES
    None

REMARKS
    None

Il sistema della Guida di PowerShell contiene anche articoli della Guida relativi alle informazioni concettuali. È necessario aggiornare il contenuto della Guida nel sistema per ottenere gli articoli Informazioni. Per altre informazioni, vedere la sezione Aggiornamento della Guida di questo capitolo.

Usare il comando seguente per restituire un elenco di tutti gli articoli della Guida Informazioni sul sistema.

help About_*

Quando si limitano i risultati a un articolo informazioni sulla Guida, Get-Help visualizza il contenuto di tale articolo.

help about_Updatable_Help

Aggiornamento della Guida

In precedenza in questo capitolo sono stati aggiornati gli articoli della Guida di PowerShell nel computer la prima volta che è stato eseguito il Get-Help cmdlet. È consigliabile eseguire periodicamente il Update-Help cmdlet nel computer per ottenere eventuali aggiornamenti al contenuto della Guida.

Importante

In Windows PowerShell 5.1 è necessario eseguire Update-Help come amministratore in una sessione di PowerShell con privilegi elevati.

Nell'esempio seguente scarica Update-Help il contenuto della Guida di PowerShell per tutti i moduli installati nel computer. È consigliabile usare il parametro Force per assicurarsi di scaricare la versione più recente del contenuto della Guida.

Update-Help -Force

Come illustrato nei risultati seguenti, un modulo ha restituito un errore. Gli errori non sono insoliti e in genere si verificano quando l'autore del modulo non configura correttamente la Guida aggiornabile.

Update-Help : Failed to update Help for the module(s) 'BitsTransfer' 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], Except
   ion
    + FullyQualifiedErrorId : UnableToRetrieveHelpInfoXml,Microsoft.PowerShe
   ll.Commands.UpdateHelpCommand

Update-Help richiede l'accesso a Internet per scaricare il contenuto della Guida. Se il computer non ha accesso a Internet, usare il Save-Help cmdlet in un computer con accesso a Internet per scaricare e salvare il contenuto della Guida aggiornato. Usare quindi il parametro SourcePath di Update-Help per specificare il percorso del contenuto della Guida aggiornato salvato.

Get-Command

Get-Command è un altro comando multiuso che consente di trovare i comandi. Quando si esegue Get-Command senza parametri, viene restituito un elenco di tutti i comandi di PowerShell nel sistema. È anche possibile usare Get-Command per ottenere la sintassi dei comandi simile a Get-Help.

Come si determina la sintassi per Get-Command? È possibile usare Get-Help per visualizzare l'articolo della Guida per Get-Command, come illustrato nella sezione Get-Help di questo capitolo. È anche possibile usare Get-Command con il parametro Syntax per visualizzare la sintassi per qualsiasi comando. Questo collegamento consente di determinare rapidamente come usare un comando senza spostarsi nel contenuto della Guida.

Get-Command -Name Get-Command -Syntax

L'uso Get-Command con il parametro Syntax offre una visualizzazione più concisa della sintassi che mostra i parametri e i relativi tipi di valore, senza elencare i valori consentiti specifici, ad Get-Help esempio show.

Get-Command [[-ArgumentList] <Object[]>] [-Verb <string[]>]
[-Noun <string[]>] [-Module <string[]>]
[-FullyQualifiedModule <ModuleSpecification[]>] [-TotalCount <int>]
[-Syntax] [-ShowCommandInfo] [-All] [-ListImported]
[-ParameterName <string[]>] [-ParameterType <PSTypeName[]>]
[<CommonParameters>]

Get-Command [[-Name] <string[]>] [[-ArgumentList] <Object[]>]
[-Module <string[]>] [-FullyQualifiedModule <ModuleSpecification[]>]
[-CommandType <CommandTypes>] [-TotalCount <int>] [-Syntax]
[-ShowCommandInfo] [-All] [-ListImported] [-ParameterName <string[]>]
[-ParameterType <PSTypeName[]>] [<CommonParameters>]

Se sono necessarie informazioni più dettagliate su come usare un comando, usare Get-Help.

help Get-Command -Full

La sezione SYNTAX di Get-Help fornisce una visualizzazione più intuitiva espandendo i valori enumerati per i parametri. Mostra i valori effettivi che è possibile usare, semplificando la comprensione delle opzioni disponibili.

...
    Get-Command [[-Name] <System.String[]>] [[-ArgumentList]
    <System.Object[]>] [-All] [-CommandType {Alias | Function | Filter |
    Cmdlet | ExternalScript | Application | Script | Workflow |
    Configuration | All}] [-FullyQualifiedModule
    <Microsoft.PowerShell.Commands.ModuleSpecification[]>] [-ListImported]
    [-Module <System.String[]>] [-ParameterName <System.String[]>]
    [-ParameterType <System.Management.Automation.PSTypeName[]>]
    [-ShowCommandInfo] [-Syntax] [-TotalCount <System.Int32>]
    [<CommonParameters>]

    Get-Command [[-ArgumentList] <System.Object[]>] [-All]
    [-FullyQualifiedModule
    <Microsoft.PowerShell.Commands.ModuleSpecification[]>] [-ListImported]
    [-Module <System.String[]>] [-Noun <System.String[]>] [-ParameterName
    <System.String[]>] [-ParameterType
    <System.Management.Automation.PSTypeName[]>] [-ShowCommandInfo]
    [-Syntax] [-TotalCount <System.Int32>] [-Verb <System.String[]>]
    [<CommonParameters>]
...

La sezione PARAMETERS della Guida per Get-Command indica che i parametri Name, Noun e Verb accettano caratteri jolly.

...
    -Name <System.String[]>
        Specifies an array of names. This cmdlet gets only commands that
        have the specified name. Enter a name or name pattern. Wildcard
        characters are permitted.

        To get commands that have the same name, use the All parameter. When
        two commands have the same name, by default, `Get-Command` gets the
        command that runs when you type the command name.

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

    -Noun <System.String[]>
        Specifies an array of command nouns. This cmdlet gets commands,
        which include cmdlets, functions, and aliases, that have names that
        include the specified noun. Enter one or more nouns or noun
        patterns. Wildcard characters are permitted.

        Required?                    false
        Position?                    named
        Default value                None
        Accept pipeline input?       True (ByPropertyName)
        Accept wildcard characters?  true
    -Verb <System.String[]>
        Specifies an array of command verbs. This cmdlet gets commands,
        which include cmdlets, functions, and aliases, that have names that
        include the specified verb. Enter one or more verbs or verb
        patterns. Wildcard characters are permitted.

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

Nell'esempio seguente viene utilizzato il * carattere jolly con il valore per il parametro Name di Get-Command.

Get-Command -Name *service*

Quando si usano caratteri jolly con il parametro Name di Get-Command, restituisce i comandi di PowerShell e i comandi nativi, come illustrato nei risultati seguenti.


CommandType     Name                                               Version
-----------     ----                                               -------
Function        Get-NetFirewallServiceFilter                       2.0.0.0
Function        Set-NetFirewallServiceFilter                       2.0.0.0
Cmdlet          Get-Service                                        3.1.0.0
Cmdlet          New-Service                                        3.1.0.0
Cmdlet          New-WebServiceProxy                                3.1.0.0
Cmdlet          Restart-Service                                    3.1.0.0
Cmdlet          Resume-Service                                     3.1.0.0
Cmdlet          Set-Service                                        3.1.0.0
Cmdlet          Start-Service                                      3.1.0.0
Cmdlet          Stop-Service                                       3.1.0.0
Cmdlet          Suspend-Service                                    3.1.0.0
Application     SecurityHealthService.exe                          10.0.2...
Application     SensorDataService.exe                              10.0.2...
Application     services.exe                                       10.0.2...
Application     services.msc                                       0.0.0.0
Application     TieringEngineService.exe                           10.0.2...
Application     Windows.WARP.JITService.exe                        10.0.2...

È possibile limitare i risultati di ai comandi di Get-Command PowerShell usando il parametro CommandType .

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

Un'altra opzione può essere quella di usare il parametro Verb o Noun oppure entrambi poiché solo i comandi di PowerShell hanno verbi e sostantivi.

Nell'esempio seguente viene Get-Command usato per trovare i comandi nel computer che funzionano con i processi. Usare il parametro Noun e specificare Process come valore.

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

Riepilogo

In questo capitolo si è appreso come trovare i comandi con Get-Help e Get-Command. Si è anche appreso come usare il sistema della Guida per comprendere come usare i comandi dopo averli trovate. Inoltre, si è appreso come aggiornare il sistema della Guida nel computer quando è disponibile un nuovo contenuto della Guida.

Revisione

  1. Il parametro DisplayName di Get-Service è posizionale?
  2. Quanti set di parametri ha il cmdlet Get-Process?
  3. Quali comandi di PowerShell sono disponibili per gestire i log eventi?
  4. Qual è il comando di PowerShell per restituire un elenco di processi di PowerShell in esecuzione nel computer?
  5. Come si aggiorna il contenuto della Guida di PowerShell archiviato nel computer?

Riferimenti

Per altre informazioni sui concetti trattati in questo capitolo, vedere gli articoli della Guida di PowerShell seguenti.

Passaggi successivi

Nel capitolo successivo verranno fornite informazioni su oggetti, proprietà, metodi e cmdlet Get-Member .