Cheatsheet

← Voltar para página principal
PowerShell Cheatsheet

Guia completo de PowerShell para automação e administração Windows

💻 O que é PowerShell?

📖 Definição

PowerShell é uma plataforma de automação e configuração da Microsoft, composta por um shell de linha de comando e uma linguagem de script. É a ferramenta padrão para administração de sistemas Windows e ambientes de nuvem Microsoft.

💪 Por que aprender?

• Orientado a objetos
• Cross-platform (Windows, Linux, macOS)
• Integração com .NET
• Pipeline poderoso
• Extensível com módulos

🚀 O que você pode fazer?

• Administração de sistemas Windows
• Automação de tarefas repetitivas
• Gerenciamento de Active Directory
• Configuração de nuvem Azure
• DevOps e CI/CD

💡 Onde você vai usar:
🖥️ Windows Admin
AD, GPO, Serviços
☁️ Cloud
Azure, Office 365
🔧 DevOps
CI/CD, Automação
Modern
PowerShell 7+, Core
Filtro ativo:Todos
Total: 12 categoriasBásico: 3Intermediário: 5Avançado: 4

🟢 Comandos Básicos

Use quando: Começando com PowerShell, navegação básica, informações do sistema

📋Navegação

Básico
Get-Location

# Mostra diretório atual (pwd)

Básico
Set-Location C:\Users

# Navega para diretório (cd)

Básico
Get-ChildItem

# Lista arquivos (ls)

Básico
Get-ChildItem -Force

# Inclui arquivos ocultos

Básico
Get-ChildItem -Recurse

# Lista recursivo

📋Informações do Sistema

Básico
Get-ComputerInfo

# Informações do sistema

Básico
Get-Process

# Lista processos

Básico
Get-Service

# Lista serviços

Básico
Get-EventLog -LogName Application

# Logs de aplicação

Básico
Get-HotFix

# Updates instalados

📋Ajuda e Documentação

Básico
Get-Help Get-Process

# Ajuda do comando

Básico
Get-Command Get-Process

# Informações do comando

Básico
Update-Help

# Atualiza ajuda

Básico
Get-Module -ListAvailable

# Módulos disponíveis

📁 Gerenciamento de Arquivos

Use quando: Manipulação de arquivos e diretórios, backup, organização

📋Criação e Remoção

Básico
New-Item -Path "arquivo.txt" -ItemType File

# Criar arquivo

Básico
New-Item -Path "pasta" -ItemType Directory

# Criar pasta

Básico
Remove-Item "arquivo.txt"

# Remover arquivo

Básico
Remove-Item "pasta" -Recurse

# Remover pasta

Básico
Remove-Item "arquivo.txt" -Force

# Forçar remoção

📋Cópia e Movimentação

Básico
Copy-Item "origem.txt" "destino.txt"

# Copiar arquivo

Básico
Copy-Item "pasta" "destino" -Recurse

# Copiar pasta

Básico
Move-Item "antigo.txt" "novo.txt"

# Mover/renomear

Básico
Rename-Item "antigo.txt" "novo.txt"

# Renomear

📋Leitura e Escrita

Básico
Get-Content "arquivo.txt"

# Ler conteúdo

Básico
Get-Content "arquivo.txt" | Select-Object -First 10

# Primeiras 10 linhas

Básico
Set-Content "arquivo.txt" "conteúdo"

# Escrever arquivo

Básico
Add-Content "arquivo.txt" "mais conteúdo"

# Adicionar conteúdo

Básico
Out-File "saida.txt"

# Redirecionar saída

🔤 Variáveis e Tipos

Use quando: Armazenando dados, manipulação de variáveis, estruturas de dados

📋Declaração de Variáveis

Básico
$nome = "João"

# String

Básico
$idade = 25

# Inteiro

Básico
$altura = 1.75

# Decimal

Básico
$ativo = $true

# Booleano

Básico
$dados = $null

# Nulo

📋Arrays e Listas

Básico
$lista = @("item1", "item2", "item3")

# Array de strings

Básico
$numeros = 1..10

# Array de números

Básico
$lista[0]

# Acessar elemento

Básico
$lista[-1]

# Último elemento

Básico
$lista.Count

# Tamanho do array

Básico
$lista += "novo"

# Adicionar elemento

📋Hash Tables (Dicionários)

Básico
$pessoa = @{Nome="João"; Idade=25}

# Criar hashtable

Básico
$pessoa.Nome

# Acessar por ponto

Básico
$pessoa["Nome"]

# Acessar por chave

Básico
$pessoa.Cidade = "São Paulo"

# Adicionar propriedade

Básico
$pessoa.Keys

# Listar chaves

Básico
$pessoa.Values

# Listar valores

🔀 Estruturas de Controle

Use quando: Controlando fluxo do script, repetições, decisões lógicas

📋If/Else

Intermediário
if ($idade -ge 18) { Write-Host "Maior de idade" } else { Write-Host "Menor de idade" }

# Condicional simples

Intermediário
if ($nota -ge 7) { Write-Host "Aprovado" } elseif ($nota -ge 5) { Write-Host "Recuperação" } else { Write-Host "Reprovado" }

# Múltiplas condições

📋Loops For

Intermediário
for ($i = 1; $i -le 10; $i++) { Write-Host $i }

# Loop for tradicional

Intermediário
foreach ($item in $lista) { Write-Host $item }

# Loop foreach

Intermediário
foreach ($arquivo in Get-ChildItem) { Write-Host $arquivo.Name }

# Iterar arquivos

📋Loops While

Intermediário
$contador = 0 while ($contador -lt 5) { Write-Host $contador $contador++ }

# Loop while

Intermediário
do { $resposta = Read-Host "Digite 'sair' para parar" } while ($resposta -ne "sair")

# Loop do-while

📋Switch

Intermediário
switch ($opcao) { 1 { Write-Host "Opção 1" } 2 { Write-Host "Opção 2" } default { Write-Host "Opção inválida" } }

# Switch case

⚡ Funções e Scripts

Use quando: Automatizando tarefas, criando scripts, organização de código

📋Definição de Funções

Intermediário
function Saudar($nome) { param([string]$nome) Write-Host "Olá, $nome!" }

# Função simples

Intermediário
function Calcular-Area($base, $altura) { param([double]$base, [double]$altura) return ($base * $altura) / 2 }

# Com parâmetros tipados

Intermediário
function Testar-Conexao { param([string]$servidor = "localhost") Test-Connection $servidor }

# Com parâmetro padrão

📋Parâmetros Avançados

Intermediário
function Processar-Arquivos { param( [Parameter(Mandatory=$true)] [string]$Caminho, [Parameter()] [switch]$Recurse ) # Código da função }

# Parâmetros avançados

Intermediário
function Exportar-Dados { param( [Parameter(ValueFromPipeline=$true)] [object[]]$Dados ) $Dados | Export-Csv -Path "saida.csv" }

# Aceita pipeline

📋Módulos e Scripts

Intermediário
. .\meu-script.ps1

# Importar script

Intermediário
Import-Module .\meu-modulo.psm1

# Importar módulo

Intermediário
Export-ModuleMember -Function MinhaFuncao

# Exportar função

Intermediário
$PSVersionTable

# Versão do PowerShell

🔄 Pipeline e Operadores

Use quando: Processamento de dados, filtragem, transformação de objetos

📋Pipeline Básico

Intermediário
Get-Process | Where-Object {$_.CPU -gt 100}

# Filtrar processos

Intermediário
Get-ChildItem | Where-Object {$_.Extension -eq ".txt"}

# Filtrar arquivos

Intermediário
Get-Service | Where-Object {$_.Status -eq "Running"}

# Filtrar serviços

Intermediário
Get-Process | Sort-Object CPU -Descending

# Ordenar

📋Operadores de Comparação

Intermediário
$a -eq $b

# Igual

Intermediário
$a -ne $b

# Diferente

Intermediário
$a -gt $b

# Maior que

Intermediário
$a -ge $b

# Maior ou igual

Intermediário
$a -lt $b

# Menor que

Intermediário
$a -le $b

# Menor ou igual

Intermediário
$a -like "*texto*"

# Like (contém)

Intermediário
$a -match "regex"

# Match regex

📋Operadores Lógicos

Intermediário
$a -and $b

# E lógico

Intermediário
$a -or $b

# Ou lógico

Intermediário
-not $a

# Negação

Intermediário
$a -xor $b

# OU exclusivo

📋Select-Object

Intermediário
Get-Process | Select-Object Name, CPU, Memory

# Selecionar propriedades

Intermediário
Get-Process | Select-Object -First 10

# Primeiros 10

Intermediário
Get-Process | Select-Object -Last 5

# Últimos 5

Intermediário
Get-Process | Select-Object -Unique

# Remover duplicatas

⚙️ Gerenciamento de Processos

Use quando: Gerenciamento de sistema, troubleshooting, automação

📋Listar e Monitorar

Intermediário
Get-Process

# Todos processos

Intermediário
Get-Process -Name "chrome"

# Processo específico

Intermediário
Get-Process | Where-Object {$_.CPU -gt 100}

# Processos intensivos

Intermediário
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10

# Top 10 CPU

📋Iniciar e Parar

Intermediário
Start-Process notepad.exe

# Iniciar processo

Intermediário
Start-Process chrome.exe "https://google.com"

# Com parâmetro

Intermediário
Stop-Process -Name "notepad"

# Parar por nome

Intermediário
Stop-Process -Id 1234

# Parar por ID

Intermediário
Stop-Process -Name "chrome" -Force

# Forçar parada

📋Gerenciar Serviços

Intermediário
Get-Service

# Listar serviços

Intermediário
Get-Service -Name "Spooler"

# Serviço específico

Intermediário
Start-Service -Name "Spooler"

# Iniciar serviço

Intermediário
Stop-Service -Name "Spooler"

# Parar serviço

Intermediário
Restart-Service -Name "Spooler"

# Reiniciar serviço

🌐 Rede e Conectividade

Use quando: Configuração de rede, diagnóstico, automação web

📋Informações de Rede

Intermediário
Get-NetAdapter

# Adaptadores de rede

Intermediário
Get-NetIPAddress

# Endereços IP

Intermediário
Get-NetRoute

# Tabela de rotas

Intermediário
Test-Connection google.com

# Testar conectividade

Intermediário
Test-NetConnection google.com -Port 80

# Testar porta

📋Configuração de Rede

Intermediário
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.100 -PrefixLength 24

# Configurar IP

Intermediário
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 8.8.8.8

# Configurar DNS

Intermediário
Get-NetFirewallRule

# Regras firewall

Intermediário
New-NetFirewallRule -DisplayName "Permitir RDP" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow

# Criar regra

📋HTTP e Web

Intermediário
Invoke-WebRequest https://api.example.com

# Requisição HTTP

Intermediário
Invoke-RestMethod https://api.example.com/data

# API REST

Intermediário
$response = Invoke-WebRequest https://example.com $response.Content

# Obter conteúdo

Intermediário
Invoke-WebRequest https://example.com -OutFile "pagina.html"

# Download

👥 Active Directory

Use quando: Administração de domínio, gerenciamento de usuários, auditoria

📋Gerenciamento de Usuários

Avançado
Get-ADUser -Filter *

# Listar usuários

Avançado
Get-ADUser -Identity "joao.silva"

# Usuário específico

Avançado
New-ADUser -Name "novo.usuario" -SamAccountName "novo.usuario"

# Criar usuário

Avançado
Set-ADUser -Identity "joao.silva" -Department "TI"

# Modificar usuário

Avançado
Disable-ADAccount -Identity "joao.silva"

# Desabilitar conta

📋Gerenciamento de Grupos

Avançado
Get-ADGroup -Filter *

# Listar grupos

Avançado
Get-ADGroupMember "TI"

# Membros do grupo

Avançado
Add-ADGroupMember -Identity "TI" -Members "joao.silva"

# Adicionar ao grupo

Avançado
Remove-ADGroupMember -Identity "TI" -Members "joao.silva"

# Remover do grupo

📋Consultas e Relatórios

Avançado
Search-ADAccount -AccountDisabled

# Contas desabilitadas

Avançado
Get-ADUser -Filter {PasswordNeverExpires -eq $true}

# Senhas que não expiram

Avançado
Get-ADUser -Filter {LastLogonDate -lt (Get-Date).AddDays(-90)}

# Inativos 90 dias

Avançado
Get-ADUser -Properties * | Export-Csv "usuarios.csv"

# Exportar para CSV

🔒 Segurança e Permissões

Use quando: Scripts seguros, administração de permissões, conformidade

📋Políticas de Execução

Avançado
Get-ExecutionPolicy

# Ver política atual

Avançado
Set-ExecutionPolicy RemoteSigned

# Definir política

Avançado
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

# Bypass temporário

Avançado
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSigned

# Para usuário atual

📋Certificados e Assinatura

Avançado
Get-ChildItem Cert:\CurrentUser\My

# Certificados usuário

Avançado
Get-AuthenticodeSignature "script.ps1"

# Verificar assinatura

Avançado
Set-AuthenticodeSignature -FilePath "script.ps1" -Certificate $cert

# Assinar script

📋Permissões de Arquivos

Avançado
Get-Acl "C:\pasta"

# Ver permissões

Avançado
$acl = Get-Acl "C:\pasta" $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("Usuario","FullControl","Allow") $acl.SetAccessRule($accessRule) Set-Acl "C:\pasta" $acl

# Definir permissão

Avançado
Get-Acl "arquivo.txt" | Format-List

# Permissões detalhadas

⏰ Automação e Agendamento

Use quando: Automação de tarefas, processos em background, agendamento

📋Tarefas Agendadas

Avançado
Get-ScheduledTask

# Listar tarefas

Avançado
Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute "notepad.exe") -Trigger (New-ScheduledTaskTrigger -Daily -At 9am)

# Criar tarefa

Avançado
Start-ScheduledTask -TaskName "MinhaTarefa"

# Iniciar tarefa

Avançado
Disable-ScheduledTask -TaskName "MinhaTarefa"

# Desabilitar tarefa

Avançado
Unregister-ScheduledTask -TaskName "MinhaTarefa"

# Remover tarefa

📋Jobs em Background

Avançado
Start-Job -ScriptBlock { Get-Process }

# Iniciar job

Avançado
Get-Job

# Listar jobs

Avançado
Receive-Job -Id 1

# Obter resultado

Avançado
Stop-Job -Id 1

# Parar job

Avançado
Remove-Job -Id 1

# Remover job

📋Workflows

Avançado
workflow MeuWorkflow { parallel { Get-Process Get-Service } sequence { Write-Host "Concluído" } }

# Workflow básico

🖥️ WMI e CIM

Use quando: Monitoramento de sistema, inventário de hardware, diagnóstico

📋Consultas WMI

Avançado
Get-WmiObject -Class Win32_OperatingSystem

# Info do SO

Avançado
Get-WmiObject -Class Win32_ComputerSystem

# Info do hardware

Avançado
Get-WmiObject -Class Win32_Processor

# Info da CPU

Avançado
Get-WmiObject -Class Win32_LogicalDisk

# Info dos discos

📋Consultas CIM

Avançado
Get-CimInstance -ClassName Win32_OperatingSystem

# CIM moderno

Avançado
Get-CimInstance -Query "SELECT * FROM Win32_Process WHERE Name = 'chrome.exe'"

# Query CIM

Avançado
New-CimSession -ComputerName servidor

# Sessão remota

Avançado
Get-CimInstance -CimSession $session -ClassName Win32_Service

# Consulta remota

📋Monitoramento

Avançado
Get-EventLog -LogName System -Newest 10

# Logs do sistema

Avançado
Get-WinEvent -FilterHashtable @{LogName='Application'; Level=2}

# Eventos de erro

Avançado
Get-Counter "\Processor(_Total)\% Processor Time"

# Contador de performance

🤝 Contribuindo

Encontrou um erro? Quer melhorar um cheatsheet? Tem uma sugestão? Adoraríamos suas contribuições! Abra uma issue ou submeta um PR.

Gostou do projeto? Apoie o desenvolvimento com um café e ajude a manter tudo open source ☕