Partilhar via


Capítulo 2 - O sistema de Ajuda

Em um experimento projetado para avaliar a proficiência em PowerShell, dois grupos distintos de profissionais de TI — iniciantes e especialistas — receberam pela primeira vez um exame escrito sem acesso a um computador. Surpreendentemente, as pontuações do teste indicaram habilidades comparáveis em ambos os grupos. Um teste subsequente foi então administrado, espelhando o primeiro, mas com uma diferença fundamental: os participantes tinham acesso a um computador offline equipado com PowerShell. Desta vez, os resultados revelaram uma lacuna significativa de competências entre os dois grupos.

Que fatores contribuíram para os resultados observados entre as duas avaliações?

Os especialistas nem sempre sabem as respostas, mas sabem como descobrir as respostas.

Os resultados observados nos resultados dos dois testes foram porque os especialistas não memorizam milhares de comandos do PowerShell. Em vez disso, eles se destacam no uso do sistema de Ajuda no PowerShell, permitindo que eles descubram e aprendam a usar comandos quando necessário.

Tornar-se proficiente com o sistema de Ajuda é a chave para o sucesso com o PowerShell.

Ouvi Jeffrey Snover, o criador do PowerShell, compartilhar uma história semelhante em várias ocasiões.

Capacidade de descoberta

Os comandos compilados no PowerShell são conhecidos como cmdlets, pronunciados como "command-let", não "CMD-let". A convenção de nomenclatura para cmdlets segue um formato Verbo-Substantivo singular para torná-los facilmente detetáveis. Por exemplo, Get-Process é o cmdlet para determinar quais processos estão em execução e Get-Service é o cmdlet para recuperar uma lista de serviços. Funções, também conhecidas como cmdlets de script, e aliases são outros tipos de comandos do PowerShell que serão discutidos posteriormente neste livro. O termo "comando PowerShell" descreve qualquer comando no PowerShell, independentemente de ser um cmdlet, função ou alias.

Você também pode executar comandos nativos do sistema operacional a partir do PowerShell, como programas de linha de comando tradicionais como ping.exe e ipconfig.exe.

Os três cmdlets principais no PowerShell

  • Get-Help
  • Get-Command
  • Get-Member (abrangido pelo capítulo 3)

Muitas vezes me perguntam: "Como você descobre quais são os comandos no PowerShell?". Ambos Get-Help e Get-Command são recursos inestimáveis para descobrir e entender comandos no PowerShell.

Get-Help

A primeira coisa que você precisa saber sobre o sistema de Ajuda no PowerShell é como usar o Get-Help cmdlet.

Get-Help é um comando multiuso que ajuda você a aprender a usar comandos depois de encontrá-los. Você também pode usar Get-Help para localizar comandos, mas de uma maneira diferente e mais indireta quando comparado ao Get-Command.

Ao usar Get-Help para localizar comandos, ele inicialmente executa uma pesquisa curinga para nomes de comandos com base em sua entrada. Se isso não encontrar nenhuma correspondência, ele realizará uma pesquisa de texto completo abrangente em todos os artigos de ajuda do PowerShell em seu sistema. Se isso também não encontrar nenhum resultado, ele retornará um erro.

Veja como usar Get-Help para exibir o conteúdo da ajuda do Get-Help cmdlet.

Get-Help -Name Get-Help

A partir da versão 3.0 do PowerShell, o conteúdo da ajuda não é fornecido pré-instalado com o sistema operacional. Quando você executa Get-Help pela primeira vez, uma mensagem pergunta se você deseja baixar os arquivos de ajuda do PowerShell para o seu computador.

Responder Sim pressionando Y executa o Update-Help cmdlet, baixando o conteúdo da ajuda.

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 você não receber essa mensagem, execute Update-Help a partir de uma sessão elevada do PowerShell em execução como administrador.

Quando a atualização estiver concluída, o artigo de ajuda será exibido.

Reserve um momento para executar o exemplo no seu computador, revise a saída e observe como o sistema de ajuda organiza as informações.

  • NOME
  • SINOPSE
  • SINTAXE
  • DESCRIÇÃO
  • LIGAÇÕES RELACIONADAS
  • COMENTÁRIOS

Ao analisar a saída, lembre-se de que os artigos de ajuda geralmente contêm uma grande quantidade de informações e o que você vê por padrão não é o artigo de ajuda inteiro.

Parâmetros

Ao executar um comando no PowerShell, talvez seja necessário fornecer informações adicionais ou entrada para o comando. Os parâmetros permitem especificar opções e argumentos que alteram o comportamento de um comando. A seção SINTAXE de cada artigo de ajuda descreve os parâmetros disponíveis para o comando.

Get-Help tem vários parâmetros que você pode especificar para retornar o artigo de ajuda inteiro ou um subconjunto para um comando. Para exibir todos os parâmetros disponíveis para Get-Helpo , consulte a seção SINTAXE de seu artigo de ajuda, conforme mostrado no exemplo a seguir.

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

Conjuntos de parâmetros

Quando você revisar a seção SINTAXE para Get-Help, observe que as informações parecem ser repetidas seis vezes. Cada um desses blocos é um conjunto de parâmetros individual, indicando que o Get-Help cmdlet apresenta seis conjuntos distintos de parâmetros. Um olhar mais atento revela que cada conjunto de parâmetros contém pelo menos um parâmetro único, tornando-o diferente dos outros.

Os conjuntos de parâmetros excluem-se mutuamente. Depois de especificar um parâmetro exclusivo que só existe em um conjunto de parâmetros, o PowerShell limita você a usar os parâmetros contidos nesse conjunto de parâmetros. Por exemplo, você não pode usar os parâmetros Completo e Detalhado juntos porque eles pertencem a conjuntos de Get-Help parâmetros diferentes.

Cada um dos parâmetros a seguir pertence a um conjunto de parâmetros diferente para o Get-Help cmdlet.

  • Total
  • Detalhado
  • Exemplos
  • Online
  • Parâmetro
  • ShowWindow

A sintaxe do comando

Se você é novo no PowerShell, compreender as informações enigmáticas — caracterizadas por colchetes quadrados e angulares — na seção SINTAXE pode parecer esmagador. No entanto, aprender esses elementos de sintaxe é essencial para se tornar proficiente com o PowerShell. Quanto mais frequentemente você usar o sistema de Ajuda do PowerShell, mais fácil será lembrar todas as nuances.

Exiba a sintaxe do Get-EventLog cmdlet.

Get-Help Get-EventLog

A saída a seguir mostra a parte relevante do artigo de ajuda.

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

As informações de sintaxe incluem pares de colchetes ([]). Dependendo do seu uso, esses colchetes servem a duas finalidades diferentes.

  • Os elementos entre colchetes são opcionais.
  • Um conjunto vazio de colchetes seguindo um tipo de dados, como <string[]>, indica que o parâmetro pode aceitar vários valores passados como uma matriz ou um objeto de coleção.

Parâmetros posicionais

Alguns cmdlets são projetados para aceitar parâmetros posicionais. Os parâmetros posicionais permitem fornecer um valor sem especificar o nome do parâmetro. Ao usar um parâmetro posicionalmente, você deve especificar seu valor na posição correta na linha de comando. Você pode encontrar as informações posicionais de um parâmetro na seção PARAMETERS do artigo de ajuda de um comando. Ao especificar explicitamente nomes de parâmetros, você pode usá-los em qualquer ordem.

Para o Get-EventLog cmdlet, o primeiro parâmetro no primeiro conjunto de parâmetros é LogName. LogName está entre colchetes, indicando que é um parâmetro posicional.

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

Como LogName é um parâmetro posicional, você pode especificá-lo por nome ou posição. De acordo com os colchetes angulares após o nome do parâmetro, o valor para LogName deve ser uma única cadeia de caracteres. A ausência de colchetes que coloquem o nome do parâmetro e o tipo de dados indica que LogName é um parâmetro necessário dentro desse conjunto de parâmetros específico.

O segundo parâmetro nesse conjunto de parâmetros é InstanceId. O nome do parâmetro e o tipo de dados estão totalmente entre colchetes, significando que InstanceId é um parâmetro opcional.

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

Além disso, InstanceId tem seu próprio par de colchetes, indicando que é um parâmetro posicional semelhante ao parâmetro LogName . Seguindo o tipo de dados, um conjunto vazio de colchetes implica que InstanceId pode aceitar vários valores.

Parâmetros do interruptor

Um parâmetro que não requer um valor é chamado de parâmetro switch. Você pode identificar facilmente os parâmetros do switch porque não há nenhum tipo de dados após o nome do parâmetro. Quando você especifica um parâmetro switch, seu valor é true. Quando você não especifica um parâmetro switch, seu valor é false.

O segundo conjunto de parâmetros inclui um parâmetro List , que é um parâmetro switch. Quando você especifica o parâmetro List , ele retorna uma lista de logs de eventos no computador local.

[-List]

Uma abordagem simplificada da sintaxe

Há um método mais amigável para obter as mesmas informações que a sintaxe de comando enigmática para alguns comandos, exceto em inglês simples. O PowerShell retorna o artigo de ajuda completo ao usar Get-Help com o parâmetro Full , facilitando a compreensão do uso de um comando.

Get-Help -Name Get-Help -Full

Reserve um momento para executar o exemplo no seu computador, revise a saída e observe como o sistema de ajuda organiza as informações.

  • NOME
  • SINOPSE
  • SINTAXE
  • DESCRIÇÃO
  • PARÂMETROS
  • ENTRADAS
  • SAÍDAS
  • NOTAS
  • EXEMPLOS
  • LIGAÇÕES RELACIONADAS

Ao especificar o parâmetro Full com o Get-Help cmdlet, a saída inclui várias seções extras. Entre essas seções, PARAMETERS geralmente fornece uma explicação detalhada para cada parâmetro. No entanto, a extensão dessas informações varia dependendo do comando específico que você está investigando.

...
    -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 você executou o comando anterior para exibir a ajuda para o Get-Help comando, você provavelmente notou a saída rolada muito rapidamente para lê-lo.

Se você estiver usando o console do PowerShell, o Terminal do Windows ou o VS Code e precisar exibir um artigo de ajuda, a help função pode ser útil. Ele canaliza a saída de Get-Help para more.com, exibindo uma página de conteúdo de ajuda de cada vez. Recomendo usar a help função em vez do cmdlet porque ela fornece uma melhor experiência ao Get-Help usuário e é menos para digitar.

Nota

O ISE não suporta o uso more.comdo , portanto, a execução help funciona da mesma maneira que Get-Helpo .

Execute cada um dos seguintes comandos no PowerShell no seu computador.

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

Você observou alguma variação na saída quando executou os comandos anteriores?

No exemplo anterior, a primeira linha usa o Get-Help cmdlet, a segunda usa a help função e a terceira linha omite o parâmetro Name ao usar a help função. Como Name é um parâmetro posicional, o terceiro exemplo aproveita sua posição em vez de declarar explicitamente o nome do parâmetro.

A diferença é que os dois últimos comandos exibem sua saída uma página de cada vez. Ao usar a help função, pressione a Barra de espaço para exibir a próxima página de conteúdo ou Q para sair. Se você precisar encerrar qualquer comando em execução interativa no PowerShell, pressione Ctrl+C.

Para encontrar rapidamente informações sobre um parâmetro específico, use o parâmetro Parameter . Essa abordagem retorna conteúdo contendo apenas as informações específicas do parâmetro, em vez de todo o artigo de ajuda. Esta é a maneira mais fácil de encontrar informações sobre um parâmetro específico.

O exemplo a seguir usa a help função com o parâmetro Parameter para retornar informações do artigo de ajuda para o parâmetro Name de Get-Help.

help Get-Help -Parameter Name

As informações de ajuda mostram que o parâmetro Name é posicional e deve ser especificado na primeira posição (posição zero) quando usado posicionalmente.

-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

O parâmetro Name espera um valor de cadeia de caracteres conforme identificado pelo <String> tipo de dados ao lado do nome do parâmetro.

Há vários outros parâmetros que você pode especificar para Get-Help retornar um subconjunto de um artigo de ajuda. Para ver como funcionam, execute os seguintes comandos no seu computador.

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

Eu normalmente uso help <command name> com o parâmetro Full ou Online . Se você tiver interesse apenas nos exemplos, use o parâmetro Examples . Se você tiver interesse apenas em um parâmetro específico, use o parâmetro Parameter .

Quando você usa o parâmetro ShowWindow , ele exibe o conteúdo da ajuda em uma janela pesquisável separada. Você pode mover essa janela para um monitor diferente se tiver vários monitores. No entanto, o parâmetro ShowWindow tem um bug conhecido que pode impedi-lo de exibir o artigo de ajuda inteiro. O parâmetro ShowWindow também requer um sistema operacional com uma interface gráfica do usuário (GUI). Ele retorna um erro quando você tenta usá-lo no Windows Server Core.

Se você tiver acesso à Internet, poderá usar o parâmetro Online . O parâmetro Online abre o artigo de ajuda no navegador da Web padrão. O conteúdo em linha é o conteúdo mais atualizado. O navegador permite pesquisar o conteúdo da ajuda e visualizar outros artigos de ajuda relacionados.

Nota

O parâmetro Online não é suportado para artigos Sobre .

help Get-Command -Online

Localizando comandos com Get-Help

Para localizar comandos com Get-Help, especifique um termo de pesquisa cercado por caracteres curinga asterisco (*) para o valor do parâmetro Name. O exemplo a seguir usa o parâmetro Name posicionalmente.

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

Nesse cenário, não é necessário adicionar os caracteres curinga * . Se Get-Help não conseguir encontrar um comando que corresponda ao valor fornecido, ele fará uma pesquisa de texto completo para esse valor. O exemplo a seguir produz os mesmos resultados que a especificação do caractere curinga * em cada extremidade do process.

help process

Quando você especifica um caractere curinga dentro do valor, Get-Help procura apenas comandos que correspondam ao padrão fornecido. Ele não executa uma pesquisa de texto completo. O comando a seguir não retorna nenhum resultado.

help pr*cess

O PowerShell gera um erro se você especificar um valor que começa com um traço sem colocá-lo entre aspas, pois ele o interpreta como um nome de parâmetro. Esse nome de parâmetro não existe para o Get-Help cmdlet.

help -process

Se você estiver tentando pesquisar comandos que terminam com -process, deverá adicionar um * ao início do valor.

help *-process

Quando você pesquisa comandos do PowerShell com Get-Helpo , é melhor ser vago em vez de muito específico.

Quando você pesquisou process anteriormente, os resultados retornaram apenas comandos incluídos process em seu nome. Mas se você pesquisar por processes, ele não encontrará nenhuma correspondência para nomes de comando. Como dito anteriormente, quando a ajuda não encontra nenhuma correspondência, ela realiza uma pesquisa abrangente de texto completo de cada artigo de ajuda em seu sistema e retorna esses resultados. Este tipo de pesquisa produz frequentemente mais resultados do que o esperado, incluindo informações não relevantes para si.

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 você pesquisou process, ele retornou 12 resultados. No entanto, ao pesquisar processes, produziu 78 resultados. Se a pesquisa encontrar apenas uma correspondência, Get-Help exibirá o conteúdo da ajuda em vez de listar os resultados da pesquisa.

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://learn.microsoft.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"

Você também pode encontrar comandos que não possuem artigos de ajuda com Get-Helpo , embora esse recurso não seja comumente conhecido. A more função é um dos comandos que não tem um artigo de ajuda. Para confirmar que você pode encontrar comandos que Get-Help não incluem artigos de ajuda, use a help função para localizar more.

help *more*

A pesquisa encontrou apenas uma correspondência, por isso retornou as informações básicas de sintaxe que você vê quando um comando não tem um artigo de ajuda.

NAME
    more

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

ALIASES
    None

REMARKS
    None

O sistema de ajuda do PowerShell também contém artigos de ajuda conceituais Sobre . Você deve atualizar o conteúdo de ajuda em seu sistema para obter os artigos Sobre. Para obter mais informações, consulte a seção Ajuda para atualização deste capítulo.

Use o comando a seguir para retornar uma lista de todos os artigos de ajuda Sobre em seu sistema.

help About_*

Quando você limita os resultados a um artigo de ajuda Sobre , Get-Help exibe o conteúdo desse artigo.

help about_Updatable_Help

Atualizar a ajuda

No início deste capítulo, você atualizou os artigos de ajuda do PowerShell em seu computador na primeira vez que executou o Get-Help cmdlet. Você deve executar periodicamente o Update-Help cmdlet em seu computador para obter atualizações para o conteúdo da ajuda.

Importante

No Windows PowerShell 5.1, você deve ser executado Update-Help como administrador em uma sessão elevada do PowerShell.

No exemplo a seguir, Update-Help baixa o conteúdo da ajuda do PowerShell para todos os módulos instalados no seu computador. Você deve usar o parâmetro Force para garantir que você baixe a versão mais recente do conteúdo da ajuda.

Update-Help -Force

Como mostrado nos resultados a seguir, um módulo retornou um erro. Os erros não são incomuns e geralmente ocorrem quando o autor do módulo não configura a ajuda atualizável corretamente.

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 requer acesso à Internet para transferir o conteúdo da ajuda. Se o computador não tiver acesso à Internet, use o Save-Help cmdlet em um computador com acesso à Internet para baixar e salvar o conteúdo da ajuda atualizado. Em seguida, use o parâmetro SourcePath de Update-Help para especificar o local do conteúdo da ajuda atualizado salvo.

Get-Command

Get-Command é outro comando multiuso que ajuda você a encontrar comandos. Quando você executa Get-Command sem parâmetros, ele retorna uma lista de todos os comandos do PowerShell em seu sistema. Você também pode usar Get-Command para obter sintaxe de comando semelhante a Get-Help.

Como você determina a sintaxe para Get-Command? Você pode usar Get-Help para exibir o artigo de ajuda do Get-Command, conforme mostrado na seção Get-Help deste capítulo. Você também pode usar Get-Command com o parâmetro Syntax para exibir a sintaxe de qualquer comando. Esse atalho ajuda você a determinar rapidamente como usar um comando sem navegar pelo conteúdo da ajuda.

Get-Command -Name Get-Command -Syntax

Usar Get-Command com o parâmetro Syntax fornece uma visão mais concisa da sintaxe que mostra os parâmetros e seus tipos de valor, sem listar os valores permitidos específicos, como Get-Help shows.

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 precisar de informações mais detalhadas sobre como usar um comando, use Get-Help.

help Get-Command -Full

A seção SYNTAX do Get-Help fornece uma exibição mais amigável expandindo valores enumerados para parâmetros. Ele mostra os valores reais que você pode usar, facilitando a compreensão das opções disponíveis.

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

A seção PARAMETERS da ajuda para Get-Command revela que os parâmetros Name, Noun e Verb aceitam caracteres curinga.

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

O exemplo a seguir usa o caractere curinga * com o valor do parâmetro Name de Get-Command.

Get-Command -Name *service*

Quando você usa caracteres curinga com o parâmetro Name do Get-Command, ele retorna comandos do PowerShell e comandos nativos, conforme mostrado nos resultados a seguir.


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

Você pode limitar os resultados dos comandos do Get-Command PowerShell usando o parâmetro CommandType .

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

Outra opção pode ser usar o parâmetro Verb ou Noun ou ambos, já que apenas os comandos do PowerShell têm verbos e substantivos.

O exemplo a seguir usa Get-Command para localizar comandos em seu computador que funcionam com processos. Use o parâmetro Noun e especifique Process como seu valor.

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

Resumo

Neste capítulo, você aprendeu como encontrar comandos com Get-Help e Get-Command. Você também aprendeu como usar o sistema de ajuda para entender como usar comandos depois de encontrá-los. Além disso, você aprendeu como atualizar o sistema de ajuda no seu computador quando um novo conteúdo de ajuda está disponível.

Rever

  1. O parâmetro Get-Service DisplayName é posicional?
  2. Quantos conjuntos de parâmetros tem o Get-Process cmdlet?
  3. Quais comandos do PowerShell existem para trabalhar com logs de eventos?
  4. Qual é o comando do PowerShell para retornar uma lista de processos do PowerShell em execução no seu computador?
  5. Como atualizar o conteúdo de ajuda do PowerShell armazenado no seu computador?

Referências

Para saber mais sobre os conceitos abordados neste capítulo, leia os seguintes artigos de ajuda do PowerShell.

Próximos passos

No próximo capítulo, você aprenderá sobre objetos, propriedades, métodos e o Get-Member cmdlet.