Compartilhar via


Descobrir o PowerShell

O PowerShell é um shell de linha de comando e uma linguagem de script em um. O PowerShell começou no Windows para ajudar a automatizar tarefas administrativas. Agora, ele executa a plataforma cruzada e pode ser usado para várias tarefas.

O que torna o PowerShell exclusivo é que ele aceita e retorna objetos .NET, em vez de texto. Esse recurso facilita a conexão de comandos diferentes em um pipeline.

Para que o PowerShell pode ser usado?

Inicialmente, o PowerShell era somente windows. Agora, ele é multiplataforma e pode ser usado para várias tarefas, como:

  • Gerenciamento de nuvem. O PowerShell pode ser usado para gerenciar recursos de nuvem. Por exemplo, você pode recuperar informações, atualizar ou implantar novos recursos.
  • CI/CD. Ele também pode ser usado como parte de um pipeline de Integração Contínua/Implantação Contínua.
  • Automatizar tarefas para o Active Directory e o Exchange. Você pode usá-la para automatizar quase qualquer tarefa no Windows, como criar usuários no Active Directory e caixas de correio no Exchange.

Quem usa o PowerShell?

O PowerShell é uma ferramenta poderosa que pode ajudar as pessoas que trabalham em várias funções. Tradicionalmente, o PowerShell era usado pelos Administradores do Sistema. Agora ele está sendo usado por pessoas que se chamam DevOps, Cloud Ops e até desenvolvedores.

Cmdlets do PowerShell

O PowerShell vem com centenas de comandos pré-instalados. Os comandos do PowerShell são chamados de cmdlets ( command-lets pronunciados).

O nome de cada cmdlet consiste em um par Verb-Noun . Por exemplo, Get-Process. Essa convenção de nomenclatura facilita a compreensão do que o cmdlet faz. Também facilita a localização do comando que você está procurando. Ao procurar um cmdlet a ser usado, você pode filtrar no verbo ou substantivo.

Usando cmdlets para explorar o PowerShell

Quando você pega o PowerShell pela primeira vez, pode parecer intimidante, pois parece haver muito o que aprender. O PowerShell foi projetado para ajudá-lo a aprender um pouco de cada vez, como você precisa.

O PowerShell inclui cmdlets que ajudam você a descobrir o PowerShell. Usando esses três cmdlets, você pode descobrir em quais comandos estão disponíveis, no que eles fazem e em quais tipos eles operam.

  • Get-Verb. A execução desse comando retorna uma lista de verbos aos quais a maioria dos comandos adere. A resposta inclui uma descrição do que esses verbos fazem. Como a maioria dos comandos segue essa convenção de nomenclatura, ela define expectativas sobre o que um comando faz. Esse comando ajuda você a selecionar o verbo apropriado e o que nomear um comando ao criar seus próprios comandos.
  • Get-Command. Esse comando recupera uma lista de todos os comandos instalados em seu computador.
  • Get-Member. Ele opera na saída baseada em objeto e é capaz de descobrir quais objetos, propriedades e métodos estão disponíveis para um comando.
  • Get-Help. Invocar esse comando com o nome de um comando como argumento exibe uma página de ajuda que descreve várias partes de um comando.

Usando esses comandos, você pode descobrir quase tudo o que precisa saber sobre o PowerShell.

Verbo

Verbo é um conceito importante no PowerShell. É um padrão de nomenclatura que a maioria dos cmdlets segue. Também é um padrão de nomenclatura que você deve seguir ao escrever seus próprios comandos. A ideia é que o Verbo diga o que você está tentando fazer, como ler ou talvez alterar dados. O PowerShell tem uma lista padronizada de verbos. Para obter uma lista completa de todos os verbos possíveis, use o Get-Verb cmdlet:

Get-Verb

O cmdlet retorna uma longa lista de verbos. A Descrição fornece contexto para o que o verbo deve fazer. Estas são as primeiras linhas de saída:

Verb    AliasPrefix   Group     Description
----    -----------   -----     -----------
Add     a             Common    Adds a resource to a container, or attaches an item to another item
Clear   cl            Common    Removes all the resources from a container but does not delete the container
Close   cs            Common    Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy    cp            Common    Copies a resource to another name or to another container
Enter   et            Common    Specifies an action that allows the user to move into a resource
Exit    ex            Common    Sets the current environment or context to the most recently used context
...

Localizar comandos com Get-Command

O Get-Command cmdlet retorna uma lista de todos os comandos disponíveis instalados em seu sistema. A lista pode ser grande. Você pode limitar a quantidade de informações que voltam filtrando a resposta usando parâmetros ou cmdlets auxiliares.

Filtrar no nome

Você pode filtrar a saída do uso de Get-Command parâmetros diferentes. A filtragem permite que você encontre comandos que tenham determinadas propriedades. O parâmetro Name permite que você localize um comando específico por nome.

Get-Command -Name Get-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management

E se você quiser encontrar todos os comandos que funcionam com processos? Você pode usar um curinga * para corresponder a outras formas da cadeia de caracteres. Por exemplo:

Get-Command -Name *-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Debug-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Start-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Stop-Process      7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Wait-Process      7.0.0.0    Microsoft.PowerShell.Management

Filtragem em Substantivo e Verbo

Há outros parâmetros que filtram valores verbo e substantivo. A parte verbo do nome de um comando é a parte mais à esquerda. O verbo deve ser um dos valores retornados pelo Get-Verb cmdlet. A parte mais à direita de um comando é a parte substantiva. Um substantivo pode ser qualquer coisa.

  • Filtrar no verbo. No comando Get-Process, a parte do verbo é Get. Para filtrar na parte do verbo, use o parâmetro Verbo .

    Get-Command -Verb 'Get'
    

    Este exemplo lista todos os comandos que usam o verbo Get.

  • Filtrar no substantivo. No comando Get-Process, a parte substantiva é Process. Para filtrar no substantivo, use o parâmetro Substantivo . O exemplo a seguir retorna todos os cmdlets que têm substantivos começando com a letra U.

    Get-Command -Noun U*
    

Além disso, você pode combinar parâmetros para restringir sua pesquisa, por exemplo:

Get-Command -Verb Get -Noun U*
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Get-UICulture                7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Unique                   7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Uptime                   7.0.0.0    Microsoft.PowerShell.Utility

Usar cmdlets auxiliares para filtrar resultados

Você também pode usar outros cmdlets para filtrar resultados.

  • Select-Object. Este comando versátil ajuda você a escolher propriedades específicas de um ou mais objetos. Você também pode limitar o número de itens que recebe de volta. O exemplo a seguir retorna os valores de propriedade Nome e Origem para os cinco primeiros comandos disponíveis na sessão atual.

    Get-Command | Select-Object -First 5 -Property Name, Source
    
    Name                      Source
    ----                      ------
    Add-AppPackage            Appx
    Add-AppPackageVolume      Appx
    Add-AppProvisionedPackage Dism
    Add-AssertionOperator     Pester
    Add-ProvisionedAppPackage Dism
    

    Para obter mais informações, consulte Select-Object.

  • Where-Object. Esse cmdlet permite filtrar os objetos retornados com base nos valores das propriedades. O comando usa uma expressão que pode testar o valor de uma propriedade. O exemplo a seguir retorna todos os processos em que o ProcessName início é iniciado.p

    Get-Process | Where-Object {$_.ProcessName -like "p*"}
    

    O Get-Process cmdlet retorna uma coleção de objetos de processo. Para filtrar a resposta, direcione a saída para Where-Object. A tubulação significa que dois ou mais comandos estão conectados por meio de um caractere de pipe | . A saída de um comando é enviada como a entrada para o próximo comando. A expressão de filtro para Where-Object usar o -like operador para corresponder aos processos que começam com a letra p.

Explorar objetos com Get-Member

Depois de localizar o cmdlet desejado, você deseja saber mais sobre qual saída ele produz. O Get-Member cmdlet exibe o tipo, as propriedades e os métodos de um objeto. Redirecione a saída para a qual você deseja inspecionar Get-Member.

Get-Process | Get-Member

O resultado exibe o tipo retornado como TypeName e todas as propriedades e métodos do objeto. Aqui está um trecho de tal resultado:

TypeName: System.Diagnostics.Process

Name        MemberType     Definition
----        ----------     ----------
Handles     AliasProperty  Handles = Handlecount
Name        AliasProperty  Name = ProcessName
...

Usando o parâmetro MemberType , você pode limitar as informações retornadas.

Get-Process | Get-Member -MemberType Method

Por padrão, o PowerShell exibe apenas algumas propriedades. O exemplo anterior exibia o , MemberTypee Definition os Namemembros. Você pode usar Select-Object para especificar as propriedades que deseja ver. Por exemplo, você deseja exibir somente as propriedades e Definition as Name propriedades:

Get-Process | Get-Member | Select-Object Name, Definition

Pesquisar por tipo de parâmetro

Get-Member mostrou-nos que Get-Process retorna objetos de tipo de processo. O parâmetro Get-CommandParameterType pode ser usado para localizar outros comandos que utilizam objetos Process como entrada.

Get-Command -ParameterType Process
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Debug-Process                7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Enter-PSHostProcess          7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Get-Process                  7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Get-PSHostProcessInfo        7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Stop-Process                 7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Wait-Process                 7.0.0.0    Microsoft.PowerShell.Managem…

Conhecer o tipo de saída de um comando pode ajudar a restringir sua pesquisa por comandos relacionados.

Recursos adicionais