Guia PowerShell: do básico ao avançado (com exemplos úteis)
Atualizado em • Categoria: Windows / Tutoriais
1) Como abrir e verificar a versão
- Windows 11/10: Iniciar → PowerShell (ou Windows Terminal).
- Administrador: clique direito → Executar como administrador.
$PSVersionTable
O Windows traz o Windows PowerShell 5.1 por padrão. O PowerShell 7 é a versão atual, multiplataforma.
2) Instalar/atualizar o PowerShell 7
Pelo winget (Windows 10/11):
winget install --id Microsoft.PowerShell --source winget
3) Sistema de ajuda (aprenda qualquer cmdlet)
Get-Help Get-Process -Detailed
Get-Help Get-Process -Examples
Update-Help -UICulture pt-BR -Force
Get-Command *service*
Get-Member
4) Pipeline de objetos (o segredo do PowerShell)
# Top 5 processos por uso de CPU
Get-Process |
Sort-Object CPU -Descending |
Select-Object -First 5 Name, Id, CPU
# Serviços que não estão rodando
Get-Service | Where-Object Status -ne 'Running' | Select Name, Status
A pipeline do PowerShell passa objetos (com propriedades), não texto.
5) Arquivos e pastas (CRUD rápido)
# Maiores arquivos (Top 20) na pasta atual (recursivo)
Get-ChildItem -Recurse -File |
Sort-Object Length -Descending |
Select-Object -First 20 FullName, @{n='MB';e={[math]::Round($_.Length/1MB,2)}}
# Criar/mover/copiar/remover
New-Item -ItemType Directory .\Relatorios
New-Item -ItemType File .\Relatorios\leitura.txt -Force
Move-Item .\leitura.txt .\Relatorios\
Copy-Item .\Relatorios\leitura.txt .\Relatorios\leitura.bak
Remove-Item .\Relatorios\*.bak -Force
# Renomear em lote (prefixo)
Get-ChildItem *.jpg | Rename-Item -NewName { "foto_" + $_.Name }
6) Rede e sistema
ipconfig /all
Test-Connection google.com -Count 4
Get-NetAdapter | Where Status -eq 'Up'
Get-ComputerInfo | Select OsName,OsVersion,WindowsProductName
7) Processos e serviços
# Encerrar processo (cuidado!)
Get-Process notepad | Stop-Process -Force
# Parar/Iniciar serviço (admin)
Stop-Service Spooler
Start-Service Spooler
Get-Service Spooler | Select Name, Status
8) Execução de scripts, perfil e segurança
Permitir scripts locais:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Perfil (executado a cada sessão):
$profile
New-Item -ItemType File -Path $profile -Force
notepad $profile
Simular antes de executar (evite sustos):
Remove-Item C:\Temp\* -Recurse -Force -WhatIf
9) Variáveis, arrays e hashtables
$nome = "Flavio"; $idade = 28
$lista = 1..5
$hash = @{ Nome="Flavio"; Cidade="SP" }
$hash["Cidade"] = "São Paulo"
10) Funções e tratamento de erros
function Testa-Porta {
param([string]$Host, [int]$Port=80)
try {
$c = New-Object Net.Sockets.TcpClient($Host,$Port)
$c.Close()
[pscustomobject]@{ Host=$Host; Port=$Port; Aberta=$true }
} catch {
[pscustomobject]@{ Host=$Host; Port=$Port; Aberta=$false; Erro=$_.Exception.Message }
}
}
Testa-Porta -Host "google.com" -Port 443
11) Módulos e PowerShell Gallery
Install-Module PSReadLine -Scope CurrentUser -Force
Update-Module PSReadLine
Get-InstalledModule
12) Automação útil (copiar e usar)
Limpar temporários (simulação):
$alvo = $env:TEMP
Get-ChildItem $alvo -Recurse -Force |
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue -WhatIf
Organizar fotos por ano/mês:
$src="C:\Fotos"; $dst="D:\Fotos_Organizadas"
Get-ChildItem $src -Recurse -File |
ForEach-Object {
$ano = $_.LastWriteTime.Year
$mes = "{0:D2}" -f $_.LastWriteTime.Month
$pasta = Join-Path $dst "$ano\$mes"
New-Item -ItemType Directory -Path $pasta -Force | Out-Null
Move-Item $_.FullName (Join-Path $pasta $_.Name)
}
Atualizar aplicativos com winget:
winget upgrade --all --silent
13) Remoting (administração remota)
# No alvo (como admin)
Enable-PSRemoting -Force
# Sessão remota
Enter-PSSession -ComputerName SERVIDOR
# Comando remoto
Invoke-Command -ComputerName SERVIDOR -ScriptBlock { Get-Service | Where Status -ne 'Running' }
Em ambientes corporativos, valide com a equipe de segurança antes de ativar.
FAQ rápido
PowerShell 5.1 vs 7? 5.1 vem no Windows; 7 é atual e multiplataforma. Você pode ter os dois.
Preciso rodar como admin sempre? Não — só para tarefas que exigem permissão.
Como descobrir o comando certo? Use Get-Command e Get-Help NomeDoCmdlet -Examples.
Cola de comandos (cheat-sheet)
Get-Help NOME -Examples
Get-Command *texto*
Get-Process | Sort CPU -Desc | Select -First 5 Name,Id,CPU
Get-Service | Where Status -ne 'Running'
Get-ChildItem -Recurse -File | Sort Length -Desc | Select -First 20 FullName,Length
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
Install-Module NOME -Scope CurrentUser
winget upgrade --all
Use -WhatIf para simular ações destrutivas. Para tarefas de sistema, abra como Administrador.


Mais histórias
Prompt de Comando
O que é o DISM? Guia Completo