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.powershell

Escolha 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 ScriptBlock

Para 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-Service

Para 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 -Descending

Parâ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 -Detailed

Comandos 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 Servidor01

Comandos 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

Exercícios

  1. 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.
  2. 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')> " }
  3. 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 -Descending
  4. O 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 use Invoke-Command -Session $s -ScriptBlock { ... }.
  5. Qual comando você usaria para obter ajuda detalhada sobre o cmdlet Get-Process?

    ✓ Resposta: Get-Help Get-Process -Detailed ou Get-Help Get-Process -Full para a documentação completa.