Capítulo 2 - O Sistema de Ajuda

Dois grupos de profissionais de TI receberam um teste escrito sem acesso a um computador para determinar o nível de competência com o PowerShell. Os principiantes do PowerShell foram colocados num grupo e especialistas noutro. Com base nos resultados do teste, não parecia haver muita diferença no nível de competência entre os dois grupos. Ambos os grupos receberam um segundo teste semelhante ao primeiro. Desta vez, foi-lhes dado acesso a um computador com o PowerShell que não tinha acesso à Internet. Os resultados do segundo teste mostraram uma enorme diferença no nível de competência 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 nestes dois testes foram porque os especialistas não memorizam como utilizar milhares de comandos no PowerShell. Aprendem a utilizar o sistema de ajuda no PowerShell muito bem. Isto permite-lhes encontrar os comandos necessários quando necessário e como utilizar esses comandos assim que os encontrarem.

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

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

Deteção

Os comandos compilados no PowerShell são denominados cmdlets. O cmdlet é pronunciado "command-let" (não CMD-let). Os nomes dos cmdlets têm a forma de comandos "Verb-Noun" singulares para torná-los facilmente detetáveis. Por exemplo, o cmdlet para determinar quais são os processos em execução Get-Process e o cmdlet para obter uma lista de serviços e respetivos estados é Get-Service. Existem outros tipos de comandos no PowerShell, como aliases e funções que serão abordados mais à frente neste livro. O termo comando do PowerShell é um termo genérico que é frequentemente utilizado para se referir a qualquer tipo de comando no PowerShell, independentemente de ser ou não um cmdlet, função ou alias.

Os Cmdlets De Três Núcleos no PowerShell

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

Uma pergunta que me é feita muitas vezes é como pode descobrir quais são os comandos no PowerShell? Ambos Get-Command e Get-Help podem ser utilizados para determinar os comandos.

Get-Help

Get-Help é um comando multiusos. Get-Help ajuda-o a aprender a utilizar comandos assim que os encontrar. Get-Help também pode ser utilizado para ajudar a localizar comandos, mas de uma forma diferente e mais indirecta quando comparado Get-Commandcom .

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

A primeira coisa que precisa de saber sobre o sistema de ajuda no PowerShell é como utilizar o Get-Help cmdlet. O seguinte comando é utilizado para apresentar o tópico de ajuda para 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 é disponibilizada com o sistema operativo. A primeira vez Get-Help é executada para um comando, a mensagem anterior é apresentada. Se a função ou man alias help for utilizada em vez do Get-Help cmdlet, não receberá este pedido.

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

Assim que a ajuda for transferida e a atualização estiver concluída, o tópico de ajuda é devolvido para o comando especificado:

Get-Help -Name Get-Help

Dedique algum tempo a executar esse exemplo no seu computador, reveja o resultado e tome nota de como as informações são agrupadas:

  • NOME
  • SINOPSE
  • SINTAXE
  • DESCRIÇÃO
  • LIGAÇÕES RELACIONADAS
  • OBSERVAÇÕES

Como pode ver, os tópicos de ajuda podem conter uma enorme quantidade de informações e este não é mesmo o tópico de ajuda completo.

Embora não seja específico do PowerShell, um parâmetro é uma forma de fornecer entrada a um comando. Get-Help tem muitos parâmetros que podem ser especificados para devolver todo o tópico de ajuda ou um subconjunto do mesmo.

A secção sintaxe do tópico de ajuda apresentada no conjunto de resultados anterior lista todos os parâmetros para Get-Help. À primeira vista, parece que os mesmos parâmetros são listados seis vezes diferentes. Cada um desses blocos diferentes na secção de sintaxe é um conjunto de parâmetros. Isto significa que o Get-Help cmdlet tem seis conjuntos de parâmetros diferentes. Se observar melhor, irá reparar que, pelo menos, um parâmetro é diferente em cada um dos conjuntos de parâmetros.

Os conjuntos de parâmetros são mutuamente exclusivos. Uma vez utilizado um parâmetro exclusivo que só existe num dos conjuntos de parâmetros, só podem ser utilizados parâmetros contidos nesse conjunto de parâmetros. Por exemplo, não foi possível especificar os parâmetros Completo e Detalhado ao mesmo tempo porque estão em conjuntos de parâmetros diferentes.

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

  • Completa
  • Detalhado
  • Exemplos
  • Online
  • Parâmetro
  • MostrarWindow

Toda a sintaxe enigmática, como parênteses retos e angulares na secção de sintaxe, significa algo, mas será coberta no Apêndice A deste livro. Embora seja importante, aprender a sintaxe enigmática é muitas vezes difícil de reter para alguém que é novo no PowerShell e pode não usá-la todos os dias.

Para obter mais informações para compreender melhor a sintaxe enigmática, consulte Apêndice A.

Para principiantes, existe uma forma mais fácil de descobrir as mesmas informações, exceto em linguagem simples.

Quando o parâmetro Completo de Get-Help é especificado, todo o tópico de ajuda é devolvido.

Get-Help -Name Get-Help -Full

Dedique algum tempo a executar esse exemplo no seu computador, reveja o resultado 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

Tenha em atenção que a utilização do parâmetro Completo devolveu várias secções adicionais, uma das quais é a secção PARAMETERS que fornece mais informações do que a secção sintaxe enigmática.

O parâmetro Completo é um parâmetro comutador. Um parâmetro que não requer um valor é denominado parâmetro switch. Quando um parâmetro de comutador é especificado, o respetivo valor é verdadeiro e, quando não é, o valor é falso.

Se tem estado a trabalhar neste capítulo na consola do PowerShell, reparou que o comando anterior para apresentar o tópico de ajuda completo para Get-Help voar no ecrã sem lhe dar a oportunidade de o ler. Há uma maneira melhor.

Help é uma função que encaminha Get-Help para uma função chamada more, que é um wrapper para o more.com ficheiro executável no Windows. Na consola do PowerShell, help fornece uma página de ajuda de cada vez. No ISE, funciona da mesma forma Get-Helpque . A minha recomendação é utilizar a help função em vez do Get-Help cmdlet, uma vez que proporciona uma melhor experiência e é menos para escrever.

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

Experimente executar os seguintes comandos na consola do PowerShell no computador do ambiente de laboratório Windows 10.

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

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

Não existem diferenças além das duas últimas opções que devolvem os resultados uma página de cada vez. A barra de espaço é utilizada para apresentar a página seguinte do conteúdo ao utilizar a Help função e Ctrl+C cancela os comandos que estão em execução na consola do PowerShell.

O primeiro exemplo utiliza o Get-Help cmdlet , o segundo utiliza a Help função e o terceiro omite o parâmetro Name ao utilizar a Help função . O nome é um parâmetro posicional e está a ser utilizado posicionalmente nesse exemplo. Isto significa que o valor pode ser especificado sem especificar o nome do parâmetro, desde que o valor em si seja especificado na posição correta. Como é que eu sabia em que posição especificar o valor? Ao ler a ajuda, conforme mostrado no exemplo seguinte.

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

Repare que, no exemplo anterior, o parâmetro Parameter foi utilizado com a função Ajuda para devolver apenas informações do tópico de ajuda para o parâmetro Nome . Isto é muito mais conciso do que tentar analisar manualmente o que por vezes parece ser um tópico de ajuda de cem páginas.

Com base nesses resultados, pode ver que o parâmetro Name é posicional e tem de ser especificado na posição zero (a primeira posição) quando utilizado 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 o respetivo valor seja uma única cadeia, que é indicada por <String>. Se aceitasse múltiplas cadeias de carateres, o tipo de dados seria listado como <String[]>.

Por vezes, simplesmente não quer apresentar todo o tópico de ajuda de um comando. Existem vários outros parâmetros além de Completo que podem ser especificados com Get-Help ou Help. Experimente executar os seguintes comandos no computador do ambiente de laboratório do 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

Normalmente, utilizo help <command name> com o parâmetro Completo ou Online . Se só estiver interessado nos exemplos, utilizarei o parâmetro Exemplos e, se apenas estiver interessado num parâmetro específico, utilizarei o parâmetro Parameter . O parâmetro ShowWindow abre o tópico de ajuda numa janela pesquisável separada que pode ser colocada num monitor diferente se tiver vários monitores. Evitei o parâmetro ShowWindow porque existe um erro conhecido em que não apresenta todo o tópico de ajuda.

Se quiser ajuda numa janela separada, a minha recomendação é utilizar o parâmetro Online ou utilizar o parâmetro Completo e encaminhar os resultados para Out-GridView, conforme mostrado no exemplo seguinte.

help Get-Command -Full | Out-GridView

Tanto o Out-GridView cmdlet como o parâmetro ShowWindow do Get-Help cmdlet requerem um sistema operativo com uma GUI (Interface Gráfica de Utilizador). Irão gerar uma mensagem de erro se tentar utilizar qualquer um deles no Windows Server que foi instalado com a opção de instalação do núcleo do servidor (sem GUI).

Para utilizar Get-Help para localizar comandos, utilize o caráter universal asterisco (*) com o parâmetro Nome . Especifique um termo no qual está a procurar comandos como o valor do parâmetro Nome , conforme mostrado no exemplo seguinte.

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 * carateres universais não são necessários e omiti-los produz o mesmo resultado. Get-Help adiciona automaticamente os carateres universais em segundo plano.

help process

O comando anterior produz os mesmos resultados que especificar o * caráter universal em cada extremidade do processo.

Prefiro adicioná-los, uma vez que essa é a opção que funciona sempre de forma consistente. Caso contrário, são necessários em determinados cenários e não em outros. Assim que adicionar um caráter universal no meio do valor, este deixa de ser adicionado automaticamente nos bastidores ao valor que especificou.

help pr*cess

Não são devolvidos resultados por esse comando, a menos que o * caráter universal seja adicionado ao início, ao fim ou ao início e ao fim de pr*cess.

Se o valor que especificou começar com um travessão, é gerado um erro porque o PowerShell o interpreta como um nome de parâmetro e não existe esse nome de parâmetro para o Get-Help cmdlet.

help -process

Se o que está a tentar procurar forem comandos que terminem com -process, só precisa de adicionar o * caráter universal ao início do valor.

help *-process

Ao procurar comandos do PowerShell com Get-Help, quer ser um pouco mais vago em vez de ser demasiado específico com o que procura.

A pesquisa process de comandos anteriores apenas foi encontrada que continha process o nome do comando e devolveu apenas esses resultados. Quando Get-Help é utilizado para procurar processes, não encontra correspondências para nomes de comandos, pelo que efetua uma pesquisa de todos os tópicos de ajuda no PowerShell no seu sistema e devolve as correspondências que encontrar. Isto faz com que devolva um grande número 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...

Utilizar Help para procurar process 10 resultados devolvidos e utilizá-lo para procurar processes resultados devolvidos 68. Se apenas for encontrado um resultado, o tópico de ajuda em si será apresentado 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, desmascare o mito de que Help no PowerShell só pode encontrar comandos que tenham tópicos de ajuda.

help *more*
NAME
    more

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


ALIASES
    None


REMARKS
    None

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

O PowerShell contém vários tópicos de ajuda conceptual (Acerca de). O seguinte comando pode ser utilizado para devolver uma lista de todos os tópicos sobre ajuda sobre o seu sistema.

help About_*

Limitar os resultados a um único tópico Sobre ajuda apresenta o tópico de ajuda real em vez de devolver uma lista.

help about_Updatable_Help

O sistema de ajuda no PowerShell tem de ser atualizado para que os tópicos sobre a ajuda estejam presentes. Se, por algum motivo, a atualização inicial do sistema de ajuda tiver falhado no computador, os ficheiros 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 parâmetros devolve uma lista de todos os comandos no seu sistema. O exemplo seguinte demonstra como utilizar o Get-Command cmdlet para determinar que 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...

Repare no exemplo anterior em que Get-Command foi executado, o parâmetro Noun é utilizado e Process é especificado como o valor para o parâmetro Noun . E se não souber como utilizar o Get-Command cmdlet? Pode utilizar Get-Help para apresentar o tópico de ajuda para Get-Command.

Os parâmetros Nome, Substantivo e Verbo aceitam carateres universais. O exemplo seguinte mostra carateres universais que estão a ser utilizados 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 utilizar carateres universais com o parâmetro Nome de Get-Command , uma vez que também devolve ficheiros executáveis que não são comandos nativos do PowerShell.

Se pretender utilizar carateres universais com o parâmetro Nome , recomendo limitar os resultados com o parâmetro CommandType .

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

Uma opção melhor é utilizar o parâmetro Verbo ou Substantivo ou ambos, uma vez que apenas os comandos do PowerShell têm verbos e substantivos.

Encontrou algo de errado com um tópico de ajuda? A boa notícia é que os tópicos de ajuda do PowerShell foram abertos e estão disponíveis no repositório PowerShell-Docs no GitHub. Pague de forma reencaminhada, não só fixando as informações incorretas para si, mas também para todos os outros. Basta criar um fork do repositório de documentação do PowerShell no GitHub, atualizar o tópico de ajuda e submeter um pedido Pull. Assim que o pedido Pull for aceite, a documentação corrigida estará disponível para todos.

A atualizar a Ajuda

A cópia local dos tópicos de ajuda do PowerShell foi atualizada anteriormente e foi pedida a primeira ajuda num comando. Recomenda-se atualizar periodicamente o sistema de ajuda, uma vez que podem existir atualizações ao conteúdo da ajuda periodicamente. O Update-Help cmdlet é utilizado para atualizar os tópicos de ajuda. Requer acesso à Internet por predefinição e para que esteja a executar 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 devolveram erros, o que não é invulgar. Se o computador não tiver acesso à Internet, pode utilizar o Save-Help cmdlet noutro computador que tenha acesso à Internet para guardar primeiro as informações de ajuda atualizadas numa partilha de ficheiros na sua rede e, em seguida, utilizar o parâmetro SourcePath de para especificar esta localização de Update-Help rede para os tópicos de ajuda.

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

Resumo

Neste capítulo, aprendeu a encontrar comandos com e Get-HelpGet-Command. Aprendeu a utilizar o sistema de ajuda para descobrir como utilizar comandos assim que os encontrar. Também aprendeu a atualizar o conteúdo dos tópicos de ajuda quando as atualizações estão disponíveis.

O meu desafio é aprender um comando do PowerShell por dia.

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

Revisão

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

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

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