PowerShell é uma estrutura de automação de tarefas e gerenciamento de configuração desenvolvida pela Microsoft, consistindo em um shell de linha de comando e uma linguagem de script associada. Inicialmente voltado para administradores de sistema, o PowerShell fornece uma interface poderosa para automatizar tarefas e gerenciar configurações de sistema usando scripts e cmdlets (comandos leves). Ao longo dos anos, o PowerShell cresceu em capacidade e evoluiu significativamente, enfatizando sua integração com o framework .NET e permitindo o uso multiplataforma com o PowerShell Core.
O PowerShell foi introduzido pela primeira vez em 2006 como "Monad", principalmente para aprimorar a administração de sistemas no Windows. Ele criou uma ponte entre os usuários e os processos subjacentes do sistema, focando na automação de scripts de linha de comando. Seu design foi influenciado por shells Unix, com ênfase na programação orientada a objetos por meio das capacidades do framework .NET.
Com o lançamento do Windows Management Framework (WMF) 3.0 em 2012, o PowerShell se tornou mais robusto, introduzindo recursos como fluxos de trabalho e módulos. A chegada do PowerShell Core (versão 6) em 2016 marcou um marco significativo, pois foi projetado para rodar em macOS e Linux, ampliando seu alcance além do ecossistema Windows.
Atualmente, o PowerShell continua a ser desenvolvido com um modelo de código aberto, permitindo contribuições de desenvolvedores ao redor do mundo. As versões mais recentes incorporaram funcionalidades avançadas, tornando-o relevante não apenas para administração de sistemas, mas também para tarefas mais amplas de scripting e automação em diferentes plataformas. Sua relação com o .NET se aprofundou, estabelecendo-o como uma ferramenta de scripting potente para desenvolvedores em vários ambientes.
Os comandos do PowerShell, conhecidos como cmdlets, seguem uma convenção de nomenclatura verbo-substantivo.
Get-Process
O PowerShell suporta encadeamento, permitindo que a saída de um cmdlet sirva como entrada para outro.
Get-Process | Where-Object { $_.CPU -gt 100 }
As variáveis no PowerShell são prefixadas com $
e podem conter uma ampla gama de tipos de dados.
$greeting = "Olá, Mundo!"
O PowerShell suporta nativamente arrays e tabelas hash para fácil manipulação de dados.
$array = @(1, 2, 3)
$hash = @{"chave" = "valor"}
Você pode definir funções reutilizáveis no PowerShell.
function Greet {
param($name)
"Olá, $name!"
}
O tratamento de erros no PowerShell pode ser gerenciado usando blocos try/catch.
try {
Get-Process -Name "inexistente"
} catch {
Write-Host "Ocorreu um erro: $_"
}
Os scripts do PowerShell são salvos com a extensão .ps1
e podem ser executados diretamente.
# myscript.ps1
Write-Host "Executando meu script PowerShell"
O PowerShell trata dados como objetos, facilitando o acesso e a manipulação de propriedades.
$process = Get-Process -Name "powershell"
$process.Id
O PowerShell permite que você empacote e distribua funções como módulos.
Import-Module MeuModulo
O PowerShell suporta remotação, permitindo a execução de comandos em máquinas remotas.
Enter-PSSession -ComputerName Servidor01
O PowerShell é executado no ambiente de execução .NET, que facilita a execução de scripts e cmdlets do PowerShell de maneira altamente eficiente.
Vários IDEs e editores suportam o desenvolvimento em PowerShell, incluindo:
Para criar um script PowerShell, os desenvolvedores podem escrever seu código em qualquer editor de texto, salvando-o com a extensão .ps1
. Projetos podem incluir múltiplos scripts e módulos, organizados em pastas.
O PowerShell é amplamente utilizado em vários setores para:
O PowerShell tem relações com várias linguagens de programação:
Scripts PowerShell podem ser traduzidos para linguagens que suportam automação e tarefas de scripting, como Python ou Bash. Embora não existam ferramentas diretas de tradução de fonte para fonte, a conversão manual pode envolver reescrever cmdlets para comandos ou funções equivalentes na linguagem de destino.
As ferramentas existentes de tradução de fonte para fonte incluem: