O console e o ambiente
Esta aula explora o ambiente PowerShell, comparando Console, ISE e VSCode, detalhando o prompt, a execução de comandos e o gerenciamento de sessões. O objetivo é capacitar o aluno a escolher a ferramenta certa e entender o fluxo de trabalho básico.
Nesta aula, vamos mergulhar no ambiente de trabalho do PowerShell, entendendo as diferenças entre as principais interfaces disponíveis, como o Console, o ISE (Integrated Scripting Environment) e o Visual Studio Code (VSCode). Também abordaremos o prompt do PowerShell, a execução de comandos e o conceito de sessões, fundamentais para o uso eficiente da ferramenta.
Dominar o ambiente é o primeiro passo para se tornar produtivo com PowerShell. Cada interface tem suas vantagens: o console é leve e direto, o ISE oferece um ambiente integrado para scripts e o VSCode, com extensões, traz recursos modernos de edição. Vamos explorar cada um deles.
Console vs ISE vs VSCode
O Console do PowerShell (powershell.exe ou pwsh.exe) é a interface de linha de comando tradicional. Ele inicia rapidamente, consome poucos recursos e é ideal para comandos rápidos e automação via scripts. No entanto, não possui realce de sintaxe, depuração integrada ou gerenciamento de projetos.
O Windows PowerShell ISE (Integrated Scripting Environment) foi a primeira GUI oficial da Microsoft para PowerShell. Ele oferece um editor com realce de sintaxe, painel de comandos, depuração básica e execução de scripts. Apesar de útil, está em modo de manutenção e não receberá novos recursos. É uma boa opção para iniciantes.
O Visual Studio Code com a extensão PowerShell é a ferramenta recomendada atualmente. Oferece editor avançado, IntelliSense, depuração interativa, integração com Git, terminal integrado e suporte a múltiplos perfis. É multiplataforma e extensível. Exemplo de instalação da extensão:
code --install-extension ms-vscode.powershellEscolha o Console para tarefas rápidas, ISE para scripts simples em Windows e VSCode para desenvolvimento profissional.
O prompt
O prompt do PowerShell é a interface onde você digita comandos. Por padrão, ele mostra o caminho do diretório atual seguido por um símbolo maior que (>). Exemplo: PS C:\Users\Usuario>. Você pode personalizá-lo alterando a função prompt.
O prompt também exibe informações como a versão do PowerShell (em algumas configurações) e o contexto de execução. Para ver a função atual do prompt, use:
Get-Item Function:prompt | Select-Object ScriptBlockPara personalizar, defina uma nova função:
function prompt { "PS [$env:COMPUTERNAME] $(Get-Date -Format 'HH:mm')> " }Isso exibirá o nome do computador e a hora atual. O prompt pode incluir cores usando códigos ANSI no PowerShell Core (v6+) ou módulos como PSReadLine.
Executando comandos
No PowerShell, comandos podem ser cmdlets, funções, scripts ou programas externos. A sintaxe básica é Verbo-Substantivo para cmdlets nativos. Exemplo:
Get-ServicePara executar um comando, digite-o no prompt e pressione Enter. Você pode encadear comandos com o pipe (|) para passar a saída de um para o outro:
Get-Process | Where-Object { $_.CPU -gt 10 } | Sort-Object CPU -DescendingParâmetros são passados após o nome do comando, geralmente com um hífen. Exemplo:
Get-Service -Name 'wuauserv'Para obter ajuda sobre um comando, use Get-Help:
Get-Help Get-Service -DetailedComandos externos (como ping ou ipconfig) funcionam diretamente, mas sua saída é texto. Você pode capturá-la com | Out-String ou usar Invoke-Expression com cuidado.
Sessões
Uma sessão PowerShell (PSSession) é um ambiente de execução remoto ou local. Com New-PSSession, você cria uma sessão persistente para um computador remoto, permitindo executar múltiplos comandos sem reconexão:
$session = New-PSSession -ComputerName Servidor01Comandos podem ser executados na sessão usando Invoke-Command:
Invoke-Command -Session $session -ScriptBlock { Get-Service }Sessões também podem ser usadas para importar módulos remotamente ou compartilhar dados. Para encerrar, use Remove-PSSession $session. Sessões são úteis para administração remota e automação em lote.
Boas práticas
Sempre teste comandos em um ambiente não produtivo primeiro. Use -WhatIf em cmdlets que modificam o sistema para simular a execução. Mantenha o console atualizado e prefira o PowerShell Core (v7+) para compatibilidade entre plataformas. Organize seus scripts em módulos e use versionamento.
Referências
- Introdução ao Windows PowerShell ISE
- PowerShell no Visual Studio Code
- Sobre o prompt do PowerShell
- Sobre sessões PowerShell
- Trabalhando com comandos no PowerShell
- Sobre execução remota no PowerShell
Exercícios
Qual é a diferença principal entre o Console do PowerShell e o ISE?
✓ Resposta: O Console é uma interface de linha de comando pura, leve e rápida, ideal para comandos diretos. O ISE é uma GUI que oferece editor de scripts com realce de sintaxe e depuração básica, mas está em modo de manutenção. O VSCode com extensão PowerShell é a ferramenta moderna recomendada.Como você personalizaria o prompt para exibir a data e hora atuais?
✓ Resposta: Defina uma nova função prompt:function prompt { "PS $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')> " }Escreva um comando que liste todos os processos com uso de CPU superior a 5%, ordenados pelo consumo de memória (WorkingSet) em ordem decrescente.
✓ Resposta:Get-Process | Where-Object { $_.CPU -gt 5 } | Sort-Object WorkingSet -DescendingO que é uma PSSession e como criar uma para um computador remoto chamado 'Servidor02'?
✓ Resposta: Uma PSSession é uma sessão persistente para execução remota. Para criar:$s = New-PSSession -ComputerName Servidor02. Depois useInvoke-Command -Session $s -ScriptBlock { ... }.Qual comando você usaria para obter ajuda detalhada sobre o cmdlet Get-Process?
✓ Resposta:Get-Help Get-Process -DetailedouGet-Help Get-Process -Fullpara a documentação completa.