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 roda multiplataforma 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 diferentes comandos em um pipeline.
Para que o PowerShell pode ser usado?
O uso do PowerShell tem crescido desde os dias em que era somente Windows. Ele ainda é usado para automação de tarefas do Windows, mas hoje, você pode usá-lo para tarefas como:
- Gestão na nuvem. O PowerShell pode ser usado para gerenciar recursos de nuvem. Por exemplo, você pode recuperar informações sobre recursos de nuvem, bem como 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.
- Automatize tarefas para o Ative Directory e o Exchange. Você pode usá-lo para automatizar praticamente qualquer tarefa no Windows, como a criação de usuários no Ative Directory e caixas de correio no Exchange.
Há muito mais áreas de uso, mas a lista anterior dá uma dica de que o PowerShell percorreu um longo caminho.
Quem usa o PowerShell?
O PowerShell é uma ferramenta poderosa que pode ajudar as pessoas que trabalham em uma infinidade de funções. Tradicionalmente, o PowerShell tem sido usado pela função de Administrador do Sistema, mas agora está sendo usado por pessoas que se autodenominam DevOps, Cloud Ops e até mesmo Desenvolvedores.
Cmdlets do PowerShell
O PowerShell vem com centenas de comandos pré-instalados. Os comandos do PowerShell são chamados de cmdlets (pronuncia-se command-lets).
O nome de cada cmdlet consiste em um par verbo-substantivo . Por exemplo, Get-Process
. Essa convenção de nomenclatura facilita a compreensão do que o cmdlet faz. Também torna mais fácil encontrar o comando que procura. Ao procurar um cmdlet para usar, você pode filtrar o verbo ou substantivo.
Usando cmdlets para explorar o PowerShell
Quando você pega o PowerShell pela primeira vez, pode parecer intimidante, pois parece haver muito a aprender. O PowerShell foi projetado para ajudá-lo a aprender um pouco de cada vez, conforme necessário.
O PowerShell inclui cmdlets que ajudam você a descobrir o PowerShell. Usando esses três cmdlets, você pode descobrir quais comandos estão disponíveis, o que eles fazem e em que tipos eles operam.
Get-Verb
. A execução deste 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. Isso ajuda você a selecionar o comando apropriado e o que nomear um comando, caso você esteja criando um.Get-Command
. Este comando recupera uma lista de todos os comandos instalados na sua máquina.Get-Member
. Ele opera na saída baseada em objeto e é capaz de descobrir qual objeto, propriedades e métodos estão disponíveis para um comando.Get-Help
. Invocar este comando com o nome de um comando como argumento exibe uma página de ajuda descrevendo várias partes de um comando.
Usando esses comandos, você pode descobrir quase tudo o que precisa saber sobre o PowerShell.
Verbo
O 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 quando 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. Aqui estã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 que você recebe de volta é bastante grande. Você pode limitar a quantidade de informações que retornam filtrando a resposta usando parâmetros ou cmdlets auxiliares.
Filtrar por nome
Você pode filtrar a saída usando Get-Command
parâmetros diferentes. A filtragem permite que você encontre comandos que têm determinadas propriedades. O parâmetro Name permite que você encontre um comando específico pelo 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
Existem outros parâmetros que filtram os valores verbais e nominais. A parte verbal do nome de um comando é a parte mais à esquerda. O verbo deve ser um dos valores retornados Get-Verb
pelo cmdlet. A parte mais à direita de um comando é a parte nominal. Um substantivo pode ser qualquer coisa.
Filtrar por verbo. No comando
Get-Process
, a parte do verbo éGet
. Para filtrar a parte do verbo, use o parâmetro Verb.Get-Command -Verb 'Get'
Este exemplo lista todos os comandos que usam o verbo
Get
.Filtrar no substantivo. No comando
Get-Process
, a parte nominal éProcess
. Para filtrar o substantivo, use o parâmetro Noun . O exemplo a seguir retorna todos os cmdlets que têm substantivos começando com a letraU
.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-o a selecionar 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 das propriedades Name e Source para os primeiros 5 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
. Este 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 oProcessName
começa comp
.Get-Process | Where-Object {$_.ProcessName -like "p*"}
O
Get-Process
cmdlet retorna uma coleção de objetos de processo. Para filtrar a resposta, canalize a saída paraWhere-Object
. Tubulação significa que dois ou mais comandos são conectados através de um caractere de tubo|
. A saída de um comando é enviada como a entrada para o próximo comando. A expressão de filtro paraWhere-Object
usa o-like
operador para corresponder processos que começam com a letrap
.
Explore objetos com Get-Member
Depois de conseguir localizar o cmdlet desejado, você deseja saber mais sobre a saída que ele produz. O Get-Member
cmdlet exibe o tipo, as propriedades e os métodos de um objeto. Canalize a saída que você deseja inspecionar para 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 exibiu o Name
, MemberType
e Definition
membros. Você pode usar Select-Object
para especificar as propriedades que deseja ver. Por exemplo, você deseja exibir apenas as Name
propriedades e Definition
:
Get-Process | Get-Member | Select-Object Name, Definition
Pesquisa por tipo de parâmetro
Get-Member
nos mostrou que Get-Process
retorna objetos do tipo Process . O parâmetro ParameterType de Get-Command
pode ser usado para localizar outros comandos que tomam 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.