fbpx

PowerShell – 5 cmdlets úteis para desenvolvedores

PowerShell – 5 cmdlets úteis para desenvolvedores

Saudações, devs! ✌😎

Neste post eu trago uma lista dos principais comandos do PowerShell, chamados de commandlets (ou cmdlets), que uso quando estou desenvolvendo e/ou preparando aulas. Eles são tão úteis pra mim que pensei em compartilhar com vocês. Enjoy it! 😉

ATENÇÃO! Para ese post, estou considerando a versão 7.1.4. Para baixar a última versão, clique aqui!

1- Get-Content

O cmdlet Get-Content retorna o conteúdo de um arquivo direto no Shell. Muito útil para visualizar rapidamente o conteúdo de arquivos.

<# utilização simples do Get-Content #>
Get-Content <nome_do_arquivo> 

Se combinado com o parâmetro -wait, o cmdlet continuará em espera, ou seja, poderemos acompanhar as mudanças do arquivo em tempo real. Isso é muito útil quando queremos monitorar mudanças em arquivos de log ou outros arquivos de um projeto de software.

<# usando o parâmetro -wait #>
Get-Content <nome_do_arquivo> -wait

Também é possível limitar a quantidade de linhas que queremos exibir com o parâmetro -TotalCount.

<# limitando a quantidade de linhas exibidas com -TotalCount #>
Get-Content <nome_do_arquivo> -TotalCount

Também é possível paginar um arquivos grande usando o pipeline, ou seja, passando o conteúdo retornado no Get-Content para o cmdlet OutHost, veja:

<# paginando resultados com OutHost #> 
Get-Content <nome_do_arquivo> | OutHost -paging

Uma outra forma interessante é usar em conjunto com o cmdlet Select-String, usado para pesquisar strings em arquivos. Veja:

<# pesquisando a string PowerShell em um arquivo #>
Get-Content <nome_do_arquivo> | Select-String 'PowerShell'

2 – Clear Content

O comando Clear-Content limpa o conteúdo de um arquivo, mas preserva o arquivo em si. É um comando muito útil para limpar arquivos de logs, por exemplo, em tempo de projeto, quando estamos executando testes. Veja:

Clear-Content <nome_do_arquivo> 

3 – Get-Process

O cmdlet Get-Process retorna a lista dos processos ativos no Windows, sejam eles de primeiro ou segundo plano. É possível usar o pipeline do PowerShell para aplicar filtros e classificar a saída de diversas maneiras.

De fato é um comando extremamente útil. Veja alguns exemplos:

<# Utilização simples do Get-Process #>
Get-Process 
<# listando processos aplicando filtro de nome e caracteres curinga. Nesse exemplo retornamos todos os processos do Chrome #>
Get-Process chro*

<# também podemos separar os filtros de nome por vírgula #>
Get-Process chro*, firefox, subli* 

Também podemos paginar e classificar a saída com os cmdlets Select-Object, OutHost e Sort-Object, veja alguns exemplos:

<# paginação de resultados #>
Get-Process chrome*, note*, firefox | Out-Host -Paging
<# Listando apenas algumas propriedades dos processos com Select-Object #>
Get-Process | Select-Object Id, ProcessName, WS
<# Listando os 5 processos que mais consomem memória #>
Get-Process | Select-Object -first 5 Id, ProcessName, WS | Sort-Object WS -Descending

4 – Stop-Process

O cmdlet Stop-Process é usado para matar processos, ou seja, para finalizar uma aplicação. Normalmente é usado em casos em que o Gerenciador de Tarefas pára de responder ou simplesmente se nega a finalizar um processo. Veja alguns exemplos:

<# finalizar processos por nome - caractere curinga para finalizar múltiplos processo considerando o nome #>
Stop-Process -Name fire*
<# finalizar processos por id #>
Stop-Process -Id 4455

5 – Invoke-WebRequest

Esse cmdlet faz requisições HTTP e HTTPS para um servidores web, faz o parse na resposta e retorna uma coleção de elementos como links, imagens e outros elementos típicos de uma página HTML. É muito útil para testar requisições e verificar suas respostas.

No exemplo a seguir fazemos uma simples requisição HTTP ao servidor JSON Placeholder, que fornece uma API Fake, com diversos dados fictícios para teste.

<# fazendo uma simples requisição #>
Invoke-WebRequest https://jsonplaceholder.typicode.com/comments 

Esse comando deve retornar algo parecido com a imagem a seguir, mostrando informações gerais sobre a requisição:

Retorno do comando Invoke-WebRequest

Para exibir o conteúdo da resposta (propriedade Content), precisamos armazenar o resultado da requisição em uma variável e depois direcionar a saída para um arquivo com o cmdlet

<# armazena o resultado da requisição na variável result #>
$result = Invoke-WebRequest https://jsonplaceholder.typicode.com/comments 

<# Pega o conteúdo (propriedade Content) e direciona para um arquivo .json #>
$result.Content | Out-File .\content.json

Também é possível converter o conteúdo JSON para um formato mais legível. Veja:

<# usando o cmdlet ConvertFrom-Json #>
$output = ConvertFrom-Json $content.Content

BÔNUS: comandos com múltiplas linhas

Quando precisamos usar comandos extremamente longos, é recomendável quebrar a linha para que eles se tornem mais legíveis e mais fáceis de copiar. Para isso, basta usar o caractere ` (backtick). Veja o exemplo a seguir:

Get-Process | Select-Object -first 5 Id, ProcessName, WS `
| Sort-Object WS -Descending
Comando com múltiplas linhas.

Conclusão

O PowerShell é aquela ferramenta extremamente útil para diversos tipos de usuários, principalmente desenvolvedores. O domínio dessa ferramenta permite interagir de maneira rápida com o Sistema Operacional, principalmente o Windows, já que o PowerShell também é disponibilizado para Linux.

Com o PowerShell ganhamos mais produtividade e mais liberdade em diversos tipos de ambientes de desenvolvimento de software.

Se você já conhece a ferramenta, comente quais outros comandos você acha útil. Se não conhece, corra para aprender!

Até o próximo post! 😎👍


Para saber como criar um backup automatizado usando Power Shell em ambientes Windows, clique aqui!

Jorge Luís Gregório

Jorge Luís Gregório

Professor e entusiasta de tecnologia, estudioso da cultura NERD e fã de quadrinhos, animes e games. Mais um pai de menino, casado com a mulher mais linda da galáxia e cristão convicto. Gosto de ler ficção científica e discutir tecnologia, filmes, seriados, teologia, filosofia e política. Quer falar sobre esses e diversos outros assuntos? Venha comigo!