Domine o PowerShell: Crie Scripts Incríveis em Windows, macOS e Linux!

Principais Pontos

  • O PowerShell se apresenta como uma linguagem de scripting versátil, projetada para simplificar a automação de tarefas em computadores.
  • Os Cmdlets, unidades fundamentais do PowerShell, são comandos com funcionalidades específicas. O comando “Get-Command” revela todos os cmdlets disponíveis.
  • A acessibilidade do PowerShell se estende a diferentes plataformas, incluindo Windows, macOS e Linux.

O PowerShell é uma ferramenta de scripting que visa facilitar a automação de tarefas de maneira eficiente e confiável. Descubra como começar a usar o PowerShell para criar scripts personalizados no seu computador com sistema Windows.

Introdução ao Scripting com PowerShell

Para iniciar a criação de scripts básicos no Windows, é necessário familiarizar-se com três componentes chave:

  • Cmdlets: comandos de propósito específico.
  • Parâmetros: especificam detalhes de execução dos cmdlets, como o quê, quando, onde e como.
  • Pipeline: redireciona a saída de um cmdlet para outro, combinando ações.

A combinação desses elementos possibilita a criação de scripts simples para automatizar diversas tarefas.

O exemplo abaixo ilustra como um pipeline pode combinar vários cmdlets para completar uma ação:

A execução desse pipeline no PowerShell se daria por meio de um comando semelhante a:

 Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
  | Place-Object Bowl

Explorando os Cmdlets em Detalhes

Como em outras linguagens de scripting, o PowerShell oferece comandos predefinidos para manipulação de objetos e diversas operações. Esses comandos, conhecidos como Cmdlets, são a base do PowerShell.

Os Cmdlets (pronuncia-se “command-lets”) são blocos de código leves e de função única, operando em ambiente PowerShell com a extensão .dll. Sua natureza compilada resulta em execução mais rápida do que funções.

O PowerShell oferece milhares de cmdlets. Não é necessário conhecer todos; é possível iniciar com alguns básicos e aprender mais conforme você avança. Para verificar os cmdlets instalados no seu computador, execute:

 Get-Command 

Analisando os resultados, você notará que eles seguem um padrão de nomeação verbo-substantivo, facilitando a compreensão de sua função.

Por exemplo, Get-Command lista os comandos do PowerShell. Get-Process mostra os processos ativos e Copy-Item copia arquivos para um diretório.

Cada cmdlet possui documentação completa com exemplos e instruções de uso.

Para detalhes sobre um cmdlet e seu uso, utilize:

 Get-Help <nome-do-cmdlet> 

Entendendo os Parâmetros do PowerShell

Os cmdlets aceitam parâmetros para adaptar seu comportamento. Ao executar um cmdlet, parâmetros são usados para especificar detalhes de ação do comando.

Por exemplo, Get-Process lista todos os processos ativos:

Mas, e se você precisar de um processo específico? Use parâmetros. Para processos do Slack, utilize o parâmetro Name:

 Get-Process -Name Slack 

Isso exibirá apenas processos com o nome “slack”:

Alguns parâmetros são “posicionais”, tornando seus nomes opcionais. Assim, Get-Process -Name Slack e Get-Process Slack são equivalentes.

Cada cmdlet aceita parâmetros distintos. Use Get-Help para ver os parâmetros aceitos na seção SINTAXE:

 Get-Help Get-Process 

Você verá uma lista de todas as formas de executar o cmdlet:

Neste caso, o cmdlet Get-Process aceita parâmetros como Name, Id, ComputerName, Module, FileVersionInfo, entre outros. Os símbolos têm os seguintes significados:

Símbolo

Nome

Significado

Em branco

Parâmetro não aceita entrada

Hífen

Indica nome do parâmetro

<>

Colchetes Angulares

Espaço reservado para texto

[]

Colchetes

Parâmetro que pode aceitar um ou mais valores

{}

Chaves

Parâmetro aceita um conjunto de valores

Os parâmetros que aceitam entradas indicarão o tipo de dados necessários, como string, número inteiro, booleano ou DateTime. Por exemplo, isto:

 Get-Process [[-Name] <string[]>] 

Indica que o parâmetro Name aceita um ou mais valores de string. Já isso:

 Get-Process -Id <int[]> 

Indica que o parâmetro Id aceita um ou mais valores inteiros.

O exemplo anterior de Get-Process usou o parâmetro Name para restringir resultados. Para restringir ainda mais, você pode usar o parâmetro ID, que requer um número inteiro, como indicado na sintaxe.

 Get-Process -Id 3016 

Você deverá ver apenas um processo na lista:

Construindo um Pipeline

No PowerShell, todos os dados são tratados como objetos. Para criar um script, esses objetos são direcionados por uma sequência de cmdlets ou funções, conectados pelo símbolo de barra vertical ( | ). A escolha dos cmdlets certos e sua organização lógica no pipeline são cruciais para um script eficaz.

Imagine que você está criando um script para listar os cinco arquivos mais pesados em uma pasta. Embora existam formas mais sofisticadas de criar um script para essa tarefa, a linha abaixo é simples de entender:

Para realizar essa tarefa no PowerShell, utilize um pipeline semelhante a este:

 Get-ChildItem -Path "C:\Diretorio" -File | Sort-Object Length -Descending `
 | Select-Object -First 5 | Format-Table Name, Length -AutoSize

Salvando um Pipeline como Script PS1

Agora que temos um pipeline funcional, é possível salvá-lo em um arquivo de script PS1, evitando a necessidade de digitá-lo sempre que for necessário.

A forma mais fácil de criar um arquivo PS1 é colar o script no Bloco de Notas e salvar o arquivo com a extensão .ps1.

Após criar o arquivo PS1, você pode executá-lo no PowerShell digitando ./NomeDoScript.ps1:

Parabéns! Agora você tem as ferramentas para criar scripts PowerShell PS1.

PowerShell no Linux e macOS

PowerShell se destaca como uma linguagem de script ideal para iniciantes. Embora originalmente restrito ao Windows, o PowerShell atualizado agora está disponível para macOS e diversas distribuições Linux. Essa expansão torna o PowerShell ainda mais valioso, permitindo que seus conhecimentos sejam transferidos entre sistemas operacionais.