Capítulo 2 - O Sistema de Ajuda

Dois grupos de profissionais de TI receberam um teste escrito sem acesso a um computador para determinar seu nível de habilidade com o PowerShell. Os iniciantes do PowerShell foram colocados em um grupo e os especialistas em outro. Com base nos resultados do teste, não pareceu haver muita diferença no nível de habilidade entre os dois grupos. Ambos os grupos receberam um segundo teste semelhante ao primeiro. Desta vez, eles tiveram acesso a um computador com PowerShell que não tinha acesso à internet. Os resultados do segundo teste mostraram uma enorme diferença no nível de habilidade entre os dois grupos. Os especialistas nem sempre sabem as respostas, mas sabem como descobrir as respostas.

Qual foi a diferença nos resultados do primeiro e segundo teste entre estes dois grupos?

As diferenças observadas nesses dois testes foram porque os especialistas não memorizam como usar milhares de comandos no PowerShell. Eles aprendem a usar o sistema de ajuda dentro do PowerShell extremamente bem. Isso permite que eles encontrem os comandos necessários quando necessário e como usá-los depois de encontrá-los.

Já ouvi Jeffrey Snover, o inventor do PowerShell, contar uma história semelhante várias vezes.

Dominar o sistema de ajuda é a chave para ter sucesso com o PowerShell.

Capacidade de descoberta

Os comandos compilados no PowerShell são chamados cmdlets. Cmdlet é pronunciado "command-let" (não CMD-let). Os nomes dos cmdlets têm a forma de comandos singulares "Verbo-Substantivo" para torná-los facilmente detetáveis. Por exemplo, o cmdlet para determinar quais processos estão em execução é Get-Process e o cmdlet para recuperar uma lista de serviços e seus status é Get-Service. Há outros tipos de comandos no PowerShell, como aliases e funções, que serão abordados mais adiante neste livro. O termo comando PowerShell é um termo genérico que é frequentemente usado para se referir a qualquer tipo de comando no PowerShell, independentemente de ser ou não um cmdlet, função ou alias.

Os três cmdlets principais no PowerShell

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

Uma pergunta que me fazem com frequência é como você descobre quais são os comandos no PowerShell? Ambos Get-Command e Get-Help podem ser usados para determinar os comandos.

Get-Help

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

Quando Get-Help é usado para localizar comandos, ele primeiro procura correspondências curinga de nomes de comandos com base na entrada fornecida. Se não encontrar uma correspondência, ele pesquisa os próprios tópicos de ajuda e, se nenhuma correspondência for encontrada, um erro será retornado. Ao contrário da crença popular, Get-Help pode ser usado para encontrar comandos que não têm tópicos de ajuda.

A primeira coisa que você precisa saber sobre o sistema de ajuda no PowerShell é como usar o Get-Help cmdlet. O comando a seguir é usado para exibir o tópico de ajuda do 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 partir da versão 3 do PowerShell, a ajuda do PowerShell não é fornecida com o sistema operacional. A primeira vez Get-Help que é executado para um comando, a mensagem anterior é exibida. Se a função ou man o help alias for usado em vez do Get-Help cmdlet, você não receberá esse prompt.

Responder sim pressionando Y executa o cmdlet, que requer acesso à Update-Help Internet por padrão. Y pode ser especificado em maiúsculas ou minúsculas.

Quando a ajuda é baixada e a atualização é concluída, o tópico da ajuda é retornado para o comando especificado:

Get-Help -Name Get-Help

Reserve um momento para executar esse exemplo no seu computador, revise a saída e tome nota de como as informações são agrupadas:

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

Como você pode ver, os tópicos de ajuda podem conter uma enorme quantidade de informações e este nem é todo o tópico de ajuda.

Embora não seja específico do PowerShell, um parâmetro é uma maneira de fornecer entrada para um comando. Get-Help tem muitos parâmetros que podem ser especificados para retornar todo o tópico da Ajuda ou um subconjunto dele.

A seção de sintaxe do tópico da Ajuda mostrado no conjunto anterior de resultados lista todos os parâmetros do Get-Help. À primeira vista, parece que os mesmos parâmetros são listados seis vezes diferentes. Cada um desses blocos diferentes na seção de sintaxe é um conjunto de parâmetros. Isso significa que o Get-Help cmdlet tem seis conjuntos de parâmetros diferentes. Se você der uma olhada mais de perto, notará que pelo menos um parâmetro é diferente em cada um dos conjuntos de parâmetros.

Os conjuntos de parâmetros excluem-se mutuamente. Uma vez que um parâmetro exclusivo que só existe em um dos conjuntos de parâmetros é usado, apenas os parâmetros contidos nesse conjunto de parâmetros podem ser usados. Por exemplo, os parâmetros Full e Detailed não puderam ser especificados ao mesmo tempo porque estão em conjuntos de parâmetros diferentes.

Cada um dos seguintes parâmetros está em diferentes conjuntos de parâmetros:

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

Toda a sintaxe críptica, como colchetes e colchetes angulares na seção de sintaxe, significa algo, mas será abordada no Apêndice A deste livro. Embora importante, aprender a sintaxe enigmática geralmente é difícil de reter para alguém que é novo no PowerShell e pode não usá-lo todos os dias.

Para obter mais informações para entender melhor a sintaxe críptica, consulte o Apêndice A.

Para iniciantes, há uma maneira mais fácil de descobrir as mesmas informações, exceto em linguagem simples.

Quando o parâmetro Full de é especificado, todo o tópico da Get-Help ajuda é retornado.

Get-Help -Name Get-Help -Full

Reserve um momento para executar esse exemplo no seu computador, revise a saída e tome nota de como as informações são agrupadas:

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

Observe que o uso do parâmetro Full retornou várias seções adicionais, uma das quais é a seção PARAMETERS que fornece mais informações do que a seção SYNTAX enigmática.

O parâmetro Full é um parâmetro switch. Um parâmetro que não requer um valor é chamado de parâmetro switch. Quando um parâmetro switch é especificado, seu valor é true e, quando não é, seu valor é false.

Se você estiver trabalhando neste capítulo no console do PowerShell, notou que o comando anterior para exibir o tópico de ajuda completo voou Get-Help na tela sem dar a você a chance de lê-lo. Há uma forma melhor.

Help é uma função que canaliza Get-Help para uma função chamada more, que é um wrapper para o more.com arquivo executável no Windows. No console do PowerShell, help fornece uma página de ajuda de cada vez. No ISE, funciona da mesma forma que Get-Helpo . Minha recomendação é usar a help função em vez do Get-Help cmdlet, pois ela fornece uma experiência melhor e é menos para digitar.

No entanto, escrever menos nem sempre é uma coisa boa. Se você quiser salvar seus comandos como um script ou compartilhá-los com outra pessoa, certifique-se de usar nomes completos de cmdlets e parâmetros. Os nomes completos são auto-documentados, o que os torna mais fáceis de entender. Pense na próxima pessoa que tem que ler e entender seus comandos. Pode ser você. Seus colegas de trabalho e eu futuro agradecerão.

Tente executar os seguintes comandos no console do PowerShell em seu computador com ambiente de laboratório do Windows 10.

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

Você notou alguma diferença na saída dos comandos listados anteriormente quando os executou em seu computador ambiente de laboratório do Windows 10?

Não há diferenças além das duas últimas opções que retornam os resultados uma página de cada vez. A barra de espaço é usada para exibir a próxima página de conteúdo ao usar a Help função e Ctrl+C cancela comandos que estão sendo executados no console do PowerShell.

O primeiro exemplo usa o Get-Help cmdlet, o segundo usa a Help função e o terceiro omite o parâmetro Name ao usar a Help função. Name é um parâmetro posicional e está sendo usado posicionalmente nesse exemplo. Isso significa que o valor pode ser especificado sem especificar o nome do parâmetro, desde que o próprio valor seja especificado na posição correta. Como eu sabia em que posição especificar o valor? Lendo a ajuda como mostrado no exemplo a seguir.

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

Observe que, no exemplo anterior, o parâmetro Parameter foi usado com a função Help para retornar apenas informações do tópico da Ajuda para o parâmetro Name . Isso é muito mais conciso do que tentar filtrar manualmente o que às vezes parece um tópico de ajuda de cem páginas.

Com base nesses resultados, você pode ver que o parâmetro Name é posicional e deve ser especificado na posição zero (a primeira posição) quando usado posicionalmente. A ordem em que os parâmetros são especificados não importa se o nome do parâmetro é especificado.

Uma outra informação importante é que o parâmetro Name espera que o tipo de dados para seu valor seja uma única cadeia de caracteres, que é indicada por <String>. Se aceitasse várias cadeias de caracteres, o tipo de dados seria listado como <String[]>.

Às vezes, você simplesmente não quer exibir todo o tópico de ajuda para um comando. Há uma série de outros parâmetros além de Full que podem ser especificados com Get-Help ou Help. Tente executar os seguintes comandos no seu computador com ambiente de laboratório Windows 10:

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 eu estiver interessado apenas nos exemplos, usarei o parâmetro Examples e, se estiver interessado apenas em um parâmetro específico, usarei o parâmetro Parameter . O parâmetro ShowWindow abre o tópico da Ajuda em uma janela pesquisável separada que pode ser colocada em um monitor diferente se você tiver vários monitores. Eu evitei o parâmetro ShowWindow porque há um bug conhecido em que ele não exibe todo o tópico de ajuda.

Se você quiser ajuda em uma janela separada, minha recomendação é usar o parâmetro Online ou usar o parâmetro Full e canalizar os resultados para Out-GridView, como mostrado no exemplo a seguir.

help Get-Command -Full | Out-GridView

Tanto o Out-GridView cmdlet quanto o parâmetro ShowWindow do cmdlet exigem um sistema operacional com uma GUI (Interface Gráfica do Get-Help Usuário). Eles gerarão uma mensagem de erro se você tentar usar qualquer um deles no Windows Server que foi instalado usando a opção de instalação Server Core (no-GUI).

Para usar Get-Help para localizar comandos, use o caractere curinga asterisco (*) com o parâmetro Name . Especifique um termo no qual você está procurando comandos como o valor para o parâmetro Name , conforme mostrado no exemplo a seguir.

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

No exemplo anterior, os caracteres curinga * não são necessários e omiti-los produz o mesmo resultado. Get-Help adiciona automaticamente os caracteres curinga nos bastidores.

help process

O comando anterior produz os mesmos resultados que a especificação do caractere curinga * em cada extremidade do processo.

Prefiro adicioná-los, pois essa é a opção que sempre funciona de forma consistente. Caso contrário, eles são necessários em determinados cenários e não em outros. Assim que você adiciona um caractere curinga no meio do valor, ele não é mais adicionado automaticamente nos bastidores ao valor especificado.

help pr*cess

Nenhum resultado é retornado por esse comando, a menos que o * caractere curinga seja adicionado ao início, ao fim ou ao início e ao fim do pr*cess.

Se o valor especificado começar com um traço, um erro será gerado porque o PowerShell o interpreta como um nome de parâmetro e esse nome de parâmetro não existe para o Get-Help cmdlet.

help -process

Se o que você está tentando procurar são comandos que terminam com -process, você só precisa adicionar o * caractere curinga ao início do valor.

help *-process

Ao pesquisar comandos do PowerShell com Get-Helpo , você quer ser um pouco mais vago em vez de ser muito específico com o que está procurando.

A pesquisa process anterior encontrou apenas comandos que continham process o nome do comando e retornou apenas esses resultados. Quando Get-Help é usado para processespesquisar o , ele não encontra nenhuma correspondência para nomes de comando, portanto, ele executa uma pesquisa de cada tópico de ajuda no PowerShell em seu sistema e retorna todas as correspondências encontradas. Isso faz com que ele retorne um número enorme de resultados.

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

Usando Help para pesquisar process 10 resultados retornados e usando-o para procurar processes 68 resultados retornados. Se apenas um resultado for encontrado, o tópico de ajuda em si será exibido em vez de uma lista de comandos.

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"

Agora para desmistificar o mito de que Help no PowerShell só é possível encontrar comandos que tenham tópicos de ajuda.

help *more*
NAME
    more

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


ALIASES
    None


REMARKS
    None

Observe no exemplo anterior que more não tem um tópico de ajuda, mas o Help sistema no PowerShell conseguiu encontrá-lo. Ele encontrou apenas uma correspondência e retornou as informações básicas de sintaxe que você verá quando um comando não tiver um tópico de ajuda.

O PowerShell contém vários tópicos de ajuda conceituais (Sobre). O comando a seguir pode ser usado para retornar uma lista de todos os tópicos de ajuda Sobre em seu sistema.

help About_*

Limitar os resultados a um único tópico da Ajuda Sobre exibe o tópico de ajuda real em vez de retornar uma lista.

help about_Updatable_Help

O sistema de ajuda no PowerShell precisa ser atualizado para que os tópicos de ajuda Sobre estejam presentes. Se, por algum motivo, a atualização inicial do sistema de ajuda falhar no seu computador, os arquivos não estarão disponíveis até que o Update-Help cmdlet tenha sido executado com êxito.

Get-Command

Get-Command foi concebido para o ajudar a localizar comandos. A execução Get-Command sem quaisquer parâmetros retorna uma lista de todos os comandos no seu sistema. O exemplo a seguir demonstra o uso do Get-Command cmdlet para determinar quais comandos existem para trabalhar com processos:

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

Observe no exemplo anterior onde Get-Command foi executado, o parâmetro Noun é usado e Process é especificado como o valor para o parâmetro Noun . E se você não soubesse como usar o Get-Command cmdlet? Você pode usar Get-Help para exibir o tópico de ajuda do Get-Command.

Os parâmetros Name, Noun e Verb aceitam curingas. O exemplo a seguir mostra curingas sendo usados com o parâmetro Name :

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

Não sou fã de usar curingas com o parâmetro Name de, pois ele também retorna arquivos executáveis que não são comandos nativos do Get-Command PowerShell.

Se você for usar caracteres curinga com o parâmetro Name , recomendo limitar os resultados com o parâmetro CommandType .

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

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

Encontrou algo errado com um tópico de ajuda? A boa notícia é que os tópicos de ajuda para o PowerShell foram de código aberto e estão disponíveis no repositório do PowerShell-Docs no GitHub. Pague para frente, não apenas corrigindo as informações incorretas para si mesmo, mas todos os outros também. Basta bifurcar o repositório de documentação do PowerShell no GitHub, atualizar o tópico da ajuda e enviar uma solicitação pull. Assim que o pull request for aceito, a documentação corrigida estará disponível para todos.

Atualizando a Ajuda

A cópia local dos tópicos de ajuda do PowerShell foi atualizada anteriormente, a primeira ajuda em um comando foi solicitada. Recomenda-se atualizar periodicamente o sistema de ajuda porque pode haver atualizações no conteúdo da ajuda de tempos em tempos. O Update-Help cmdlet é usado para atualizar os tópicos da ajuda. Ele requer acesso à Internet por padrão e para que você esteja executando o PowerShell elevado como administrador.

Update-Help
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          : 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

Alguns dos módulos retornaram erros, o que não é incomum. Se a máquina não tiver acesso à Internet, você poderá usar o Save-Help cmdlet em outra máquina que tenha acesso à Internet para primeiro salvar as informações de ajuda atualizadas em um compartilhamento de arquivos em sua rede e, em seguida, usar o parâmetro SourcePath de para especificar esse local de rede para os tópicos da Update-Help ajuda.

Considere configurar uma tarefa agendada ou adicionar alguma lógica ao seu script de perfil no PowerShell para atualizar periodicamente o conteúdo da ajuda no seu computador. Os scripts de perfil serão discutidos em um próximo capítulo.

Resumo

Neste capítulo, você aprendeu como encontrar comandos com ambos e Get-HelpGet-Command. Você aprendeu como usar o sistema de ajuda para descobrir como usar comandos depois de encontrá-los. Você também aprendeu como atualizar o conteúdo dos tópicos de ajuda quando as atualizações estão disponíveis.

Meu desafio para você é aprender um comando do PowerShell por dia.

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

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. O que é 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?

Se você quiser saber mais informações sobre os tópicos abordados neste capítulo, recomendo ler os seguintes tópicos de ajuda do PowerShell.

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