O console e o ambiente
Esta aula explora o ambiente do PowerShell, comparando o console, o ISE e o VSCode, detalhando o prompt, a execução de comandos e o conceito de sessões. O aluno aprenderá a escolher a ferramenta adequada e a interagir com o shell de forma eficiente.
Nesta aula, vamos mergulhar no ambiente onde o PowerShell opera. Você conhecerá as diferentes interfaces disponíveis — o console tradicional, o ISE (Integrated Scripting Environment) e o VSCode (Visual Studio Code) — e entenderá como cada uma se encaixa em diferentes cenários de uso. Além disso, exploraremos o prompt do PowerShell, a execução de comandos e o conceito de sessões, que são fundamentais para dominar a automação e a administração de sistemas.
O PowerShell não é apenas uma linguagem de script; é um shell interativo que oferece um ambiente rico para administradores e desenvolvedores. Saber navegar por esse ambiente é o primeiro passo para se tornar produtivo. Vamos começar!
Console vs ISE vs VSCode
O PowerShell pode ser executado em diferentes aplicativos host. Cada um oferece vantagens específicas dependendo da tarefa.
Console do PowerShell (powershell.exe / pwsh.exe): É a interface tradicional de linha de comando, leve e rápida. Ideal para comandos rápidos, scripts simples e administração remota via SSH. Não possui realce de sintaxe ou depuração integrada, mas é a base para qualquer interação com o PowerShell. Exemplo de inicialização:
powershell.exe -NoProfile -Command "Get-Service"ISE (Integrated Scripting Environment): Incluído no Windows até a versão 5.1, oferece uma interface gráfica com editor de scripts, painel de console, realce de sintaxe e depuração básica. É útil para aprendizado e scripts simples, mas está em desuso e não recebe mais atualizações. Para abrir: powershell_ise.exe.
VSCode com extensão PowerShell: Atualmente é a ferramenta recomendada. Oferece editor avançado, IntelliSense, depuração completa, integração com Git, terminal integrado e suporte a múltiplos perfis. A extensão PowerShell da Microsoft proporciona uma experiência moderna e rica. Exemplo de configuração no settings.json:
"powershell.powerShellAdditionalExePaths": [
{
"exePath": "C:\\Program Files\\PowerShell\\7\\pwsh.exe",
"versionName": "PowerShell 7"
}
]Escolha o console para tarefas rápidas, o ISE apenas se necessário em sistemas legados, e o VSCode para desenvolvimento sério de scripts e módulos.
O prompt
O prompt do PowerShell é a interface onde você digita comandos. Por padrão, ele mostra o caminho atual do diretório e o símbolo >. Exemplo:
PS C:\Users\SeuNome>Você pode personalizar o prompt definindo uma função chamada prompt. A função deve retornar uma string. Exemplo simples:
function prompt { "PS $($executionContext.SessionState.Path.CurrentLocation)> " }Para incluir informações úteis como data/hora ou nome do usuário:
function prompt {
$date = Get-Date -Format "HH:mm:ss"
"[$date] PS $($executionContext.SessionState.Path.CurrentLocation)> "
}Depois de definir a função, o prompt será atualizado automaticamente. Você pode colocar essa função no seu perfil do PowerShell ($PROFILE) para que seja carregada sempre.
Executando comandos
No PowerShell, comandos podem ser executados diretamente no prompt ou em scripts. Existem vários tipos de comandos: cmdlets, funções, aliases, scripts e programas externos.
Cmdlets: São comandos nativos do PowerShell, no formato Verbo-Substantivo, como Get-Process, Set-Location. Exemplo:
Get-Service -Name *sql*Aliases: São nomes curtos para cmdlets ou comandos. Por exemplo, dir é um alias para Get-ChildItem, cd para Set-Location. Você pode criar seus próprios aliases com Set-Alias:
Set-Alias -Name gs -Value Get-ServiceExecução de scripts: Scripts são arquivos com extensão .ps1. Para executar, use o caminho relativo ou absoluto:
.\meuscript.ps1Se a política de execução bloquear, você pode alterá-la (com cuidado):
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserComandos externos: Programas como ipconfig, ping ou notepad.exe funcionam normalmente. O PowerShell os trata como comandos nativos.
Sessões
Uma sessão do PowerShell (PSSession) é um ambiente de execução que pode ser local ou remoto. Sessões permitem executar comandos em máquinas remotas de forma persistente.
Criando uma sessão remota:
$session = New-PSSession -ComputerName Servidor01 -Credential (Get-Credential)Executando comandos na sessão:
Invoke-Command -Session $session -ScriptBlock { Get-Process }Gerenciando sessões: Você pode listar, remover e reutilizar sessões. Sessões são úteis para tarefas que exigem múltiplos comandos no mesmo contexto remoto.
Get-PSSession
Remove-PSSession -Session $sessionSessão implícita (implicit remoting): Permite importar comandos de uma sessão remota para o seu computador local, como se fossem cmdlets locais:
Import-PSSession -Session $session -Module ActiveDirectoryIsso é muito útil para administração de servidores sem precisar de instalação local de módulos.
Boas práticas e observações finais
Ao trabalhar com o PowerShell, lembre-se de: usar o VSCode para desenvolvimento, personalizar o prompt para aumentar a produtividade, entender a diferença entre cmdlets e comandos nativos, e gerenciar sessões com cuidado para não sobrecarregar recursos. Sempre teste scripts em ambientes controlados antes de aplicar em produção.
Referências
- Documentação oficial do PowerShell
- PowerShell no VSCode
- Introdução ao ISE
- Sobre o prompt
- Sobre sessões PSSession
- Políticas de execução
- Sobre aliases
Exercícios
Qual é a diferença principal entre o console do PowerShell e o ISE? Dê um exemplo de situação onde cada um é mais adequado.
✓ Resposta: O console é uma interface de linha de comando pura, leve e rápida, ideal para comandos rápidos e scripts simples. O ISE oferece uma interface gráfica com editor e depuração, sendo melhor para aprender e desenvolver scripts pequenos, mas está obsoleto. Exemplo: use o console para executar um comando rápido comoGet-Service; use o ISE para escrever um script com loops e depuração.Escreva uma função de prompt que exiba a data atual no formato 'dd/MM/yyyy' e o caminho completo do diretório atual.
✓ Resposta:function prompt { $data = Get-Date -Format "dd/MM/yyyy" "[$data] PS $($executionContext.SessionState.Path.CurrentLocation)> " }Explique como executar um script PowerShell que está no diretório atual. O que fazer se a política de execução bloquear?
✓ Resposta: Para executar um script no diretório atual, use.\script.ps1. Se a política de execução bloquear, você pode alterá-la comSet-ExecutionPolicy RemoteSigned -Scope CurrentUser. Alternativamente, execute compowershell.exe -ExecutionPolicy Bypass -File script.ps1.Crie uma sessão remota para o computador 'Servidor01' e execute o comando
Get-Process. Depois, remova a sessão.✓ Resposta:$s = New-PSSession -ComputerName Servidor01 -Credential (Get-Credential) Invoke-Command -Session $s -ScriptBlock { Get-Process } Remove-PSSession -Session $sO que é implicit remoting e qual sua vantagem? Dê um exemplo de comando.
✓ Resposta: Implicit remoting permite importar comandos de uma sessão remota para o computador local, como se fossem cmdlets nativos. A vantagem é não precisar instalar módulos localmente. Exemplo:Import-PSSession -Session $s -Module ActiveDirectorytorna os cmdlets do AD disponíveis localmente.