PowerShell Cheat Sheet

Domain Controller · Active Directory · Usuários · Rede · Troubleshooting · Segurança · Admin  |  Windows Server 2016/2019/2022
Comandos:
Visíveis:
Categorias: 6
Clique no comando para copiar
🏛️ Active Directory — Informações do Domínio
Get-ADDomainExibe informações completas do domínio AD
Get-ADDomainController -Filter *Lista todos os Domain Controllers do domínio
Get-ADForestInformações da floresta AD (sites, domínios, esquema)
netdom query fsmoExibe todos os detentores de funções FSMO
Get-ADDomainController -Discover -NextClosestSiteDescobre o DC mais próximo por site
repadmin /showreplStatus de replicação entre DCs
repadmin /replsummaryResumo de replicação AD (erros e sucessos)
repadmin /syncall /AdePForça sincronização completa de todos os DCs
dcdiag /test:replications /vDiagnóstico detalhado de replicação do DC
dcdiag /s:DCNAME /vDiagnóstico completo de um DC específico
nltest /dclist:DOMINIOLista DCs de um domínio específico via Netlogon
nltest /sc_verify:DOMINIOVerifica o canal seguro do Netlogon
w32tm /query /statusStatus de sincronização de tempo NTP
w32tm /resync /forceForça ressincronização de tempo com servidor NTP
📋 Group Policy (GPO)
Get-GPO -AllLista todas as GPOs do domínio
Get-GPO -Name "NomeGPO" | Get-GPOReport -ReportType HTML -Path C:\gpo.htmlExporta relatório HTML de uma GPO específica
gpupdate /forceForça atualização de todas as GPOs imediatamente
gpresult /rResultante de política aplicada ao usuário/máquina atual
gpresult /h C:\gpo_report.html /fExporta RSoP completo em HTML
Invoke-GPUpdate -Computer "PC01" -ForceForça gpupdate remotamente em uma estação
Get-GPInheritance -Target "OU=Estacoes,DC=corp,DC=local"Exibe herança de GPO de uma OU
New-GPO -Name "Nova_GPO" | New-GPLink -Target "OU=TI,DC=corp,DC=local"Cria e vincula GPO a uma OU
Backup-GPO -All -Path C:\GPO_BackupFaz backup de todas as GPOs do domínio
Restore-GPO -Name "NomeGPO" -Path C:\GPO_BackupRestaura GPO a partir de backup
🔄 Serviços AD DS / SYSVOL / DNS
Get-Service NTDS,NETLOGON,DNS,W32Time | Select Name,StatusStatus dos serviços críticos do DC
Restart-Service NTDS -ForceReinicia o serviço AD DS (use com cuidado)
net stop netlogon && net start netlogonReinicia Netlogon para liberar bloqueios de SYSVOL
Get-ADReplicationFailure -Scope SiteExibe falhas de replicação por site AD
Get-DnsServerZoneLista todas as zonas DNS do servidor
Get-DnsServerResourceRecord -ZoneName "corp.local" -RRType ALista registros A de uma zona DNS
Add-DnsServerResourceRecordA -Name "server01" -ZoneName "corp.local" -IPv4Address "192.168.1.10"Adiciona registro A no DNS
Get-SmbShareLista compartilhamentos SMB do servidor
Get-SmbSessionSessões SMB ativas no servidor
👤 Gerenciamento de Usuários AD
Get-ADUser -Filter * -Properties * | Select Name,SamAccountName,Enabled,LastLogonDateLista todos usuários com último logon
Get-ADUser -Identity "joao.silva" -Properties *Exibe todos os atributos de um usuário
New-ADUser -Name "João Silva" -SamAccountName "joao.silva" -UserPrincipalName "joao.silva@corp.local" -Path "OU=TI,DC=corp,DC=local" -AccountPassword (Read-Host -AsSecureString) -Enabled $trueCria novo usuário AD interativamente
Set-ADAccountPassword -Identity "joao.silva" -Reset -NewPassword (ConvertTo-SecureString "Senha@123" -AsPlainText -Force)Redefine senha de usuário
Unlock-ADAccount -Identity "joao.silva"Desbloqueia conta de usuário
Enable-ADAccount -Identity "joao.silva"Habilita conta desativada
Disable-ADAccount -Identity "joao.silva"Desativa conta de usuário
Remove-ADUser -Identity "joao.silva" -Confirm:$falseRemove usuário AD sem confirmação
Set-ADUser -Identity "joao.silva" -Title "Analista TI" -Department "TI" -Office "SP"Atualiza atributos do usuário
Move-ADObject -Identity "CN=João Silva,OU=Usuarios,DC=corp,DC=local" -TargetPath "OU=TI,DC=corp,DC=local"Move objeto entre OUs
Get-ADUser -Filter {PasswordNeverExpires -eq $true} | Select NameLista usuários com senha que nunca expira
Search-ADAccount -LockedOut | Select Name,SamAccountName,LockedOutLista todas as contas bloqueadas
Search-ADAccount -AccountDisabled | Select NameLista contas desativadas
Search-ADAccount -PasswordExpired | Select NameLista contas com senha expirada
👥 Grupos AD
Get-ADGroup -Filter * | Select Name,GroupScope,GroupCategoryLista todos os grupos AD
Get-ADGroupMember -Identity "GRP_TI" -Recursive | Select NameLista membros de um grupo (recursivo)
Add-ADGroupMember -Identity "GRP_TI" -Members "joao.silva","maria.santos"Adiciona membros a um grupo
Remove-ADGroupMember -Identity "GRP_TI" -Members "joao.silva" -Confirm:$falseRemove membro de grupo sem confirmação
Get-ADPrincipalGroupMembership -Identity "joao.silva" | Select NameGrupos que um usuário pertence
New-ADGroup -Name "GRP_Financeiro" -GroupScope Global -GroupCategory Security -Path "OU=Grupos,DC=corp,DC=local"Cria novo grupo de segurança
Get-ADGroup -Filter {GroupScope -eq "DomainLocal"} | Select NameFiltra grupos por escopo
🗂️ OUs e Estrutura AD
Get-ADOrganizationalUnit -Filter * | Select Name,DistinguishedNameLista todas as OUs do domínio
New-ADOrganizationalUnit -Name "Estacoes" -Path "DC=corp,DC=local"Cria nova OU no caminho especificado
Get-ADComputer -Filter * -Properties * | Select Name,LastLogonDate,OperatingSystemLista computadores com SO e último logon
Get-ADComputer -Filter {LastLogonDate -lt (Get-Date).AddDays(-90)} | Select NameComputadores sem logon há mais de 90 dias
Add-Computer -DomainName "corp.local" -RestartIngressa computador no domínio
Remove-Computer -UnjoinDomainCredential (Get-Credential) -Restart -ForceRemove computador do domínio
Test-ComputerSecureChannel -RepairVerifica e repara canal seguro com domínio
⚙️ Sistema e Hardware
Get-ComputerInfoInformações completas do sistema (OS, hardware, domínio)
systeminfoInformações detalhadas clássicas do sistema
Get-WmiObject Win32_OperatingSystem | Select Caption,Version,BuildNumber,LastBootUpTimeOS, versão, build e último boot
(Get-Date) - (gcim Win32_OperatingSystem).LastBootUpTimeUptime do sistema em formato legível
Get-WmiObject Win32_Processor | Select Name,NumberOfCores,MaxClockSpeedInformações de CPU
Get-WmiObject Win32_PhysicalMemory | Measure-Object Capacity -Sum | Select @{N="TotalRAM_GB";E={$_.Sum/1GB}}Total de RAM instalada em GB
Get-PSDrive -PSProvider FileSystemEspaço em disco de todas as partições
Get-DiskInformações de discos físicos
Get-VolumeVolumes e uso de espaço em disco
Restart-Computer -ForceReinicia imediatamente sem confirmação
Stop-Computer -ForceDesliga o computador imediatamente
Restart-Computer -ComputerName "SERVER01" -ForceReinicia computador remoto
🔧 Serviços Windows
Get-Service | Where-Object {$_.Status -eq "Running"}Lista todos os serviços em execução
Get-Service | Where-Object {$_.Status -eq "Stopped" -and $_.StartType -eq "Automatic"}Serviços automáticos parados (alerta!)
Start-Service -Name "Spooler"Inicia serviço pelo nome
Stop-Service -Name "Spooler" -ForcePara serviço forçadamente
Restart-Service -Name "Spooler"Reinicia um serviço
Set-Service -Name "Spooler" -StartupType AutomaticDefine tipo de inicialização do serviço
Get-Service -ComputerName "SERVER01" | Select Name,StatusStatus de serviços em servidor remoto
sc.exe qc "NomeServico"Configuração detalhada de um serviço
📦 Processos e Performance
Get-Process | Sort-Object CPU -Descending | Select -First 10Top 10 processos por CPU
Get-Process | Sort-Object WorkingSet -Descending | Select -First 10Top 10 processos por uso de memória
Stop-Process -Name "notepad" -ForceEncerra processo pelo nome
Stop-Process -Id 1234 -ForceEncerra processo pelo PID
Get-WmiObject Win32_PerfFormattedData_PerfOS_Processor | Select Name,PercentProcessorTimeUso de CPU por core em %
Get-Counter '\Memory\Available MBytes'Memória disponível em tempo real
Get-Counter '\PhysicalDisk(_Total)\% Disk Time'Uso de disco em percentual
tasklist /svcLista processos com serviços hospedados (svchost)
🗒️ Event Log e Auditoria
Get-EventLog -LogName System -EntryType Error -Newest 20Últimos 20 erros no log de Sistema
Get-EventLog -LogName Application -EntryType Error -Newest 20Últimos 20 erros no log de Aplicativo
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625} -MaxEvents 50Event ID 4625 — falhas de logon (brute force)
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4648} -MaxEvents 20Event ID 4648 — logon com credenciais explícitas
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4740} -MaxEvents 20Event ID 4740 — conta de usuário bloqueada
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4624;StartTime=(Get-Date).AddHours(-1)} -MaxEvents 100Logons bem-sucedidos na última hora
Clear-EventLog -LogName "Application","System"Limpa logs (use com cautela!)
wevtutil qe System /c:50 /f:text /rd:trueQuery de eventos via wevtutil (50 mais recentes)
💾 Windows Update e Software
Get-HotFix | Sort-Object InstalledOn -Descending | Select -First 15Últimos 15 updates/patches instalados
Get-HotFix -Id "KB5005033"Verifica se um KB específico está instalado
Install-Module PSWindowsUpdate -Force; Get-WindowsUpdateInstala módulo e lista updates pendentes
Install-WindowsUpdate -AcceptAll -AutoRebootInstala todos os updates e reinicia
Get-WmiObject Win32_Product | Select Name,Version | Sort NameLista softwares instalados via MSI
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select DisplayName,DisplayVersionLista todos programas instalados (via registry)
wusa /kb:5005033 /uninstall /quiet /norestartRemove update específico silenciosamente
🌐 Configuração de Rede
Get-NetIPAddressLista todos os endereços IP do sistema
Get-NetIPConfigurationConfiguração de rede completa por adapter
Get-NetAdapter | Select Name,Status,LinkSpeed,MacAddressStatus de todos os adaptadores de rede
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.50 -PrefixLength 24 -DefaultGateway 192.168.1.1Define IP estático em um adaptador
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 8.8.8.8,8.8.4.4Define servidores DNS do adaptador
Remove-NetIPAddress -InterfaceAlias "Ethernet" -Confirm:$false; Remove-NetRoute -InterfaceAlias "Ethernet" -Confirm:$falseRemove IP estático (prepara para DHCP)
Set-NetIPInterface -InterfaceAlias "Ethernet" -Dhcp EnabledHabilita DHCP no adaptador
ipconfig /release; ipconfig /renewLibera e renova concessão DHCP
ipconfig /flushdnsLimpa cache DNS do cliente
ipconfig /displaydnsExibe o cache DNS atual
Get-NetRouteTabela de roteamento do sistema
New-NetRoute -DestinationPrefix "10.0.0.0/8" -NextHop "192.168.1.1" -InterfaceAlias "Ethernet"Adiciona rota estática
🔌 Conectividade e Diagnóstico de Rede
Test-Connection -ComputerName "192.168.1.1" -Count 4Ping PowerShell nativo
Test-NetConnection -ComputerName "google.com" -Port 443Testa conectividade TCP em porta específica
Test-NetConnection -ComputerName "SERVER01" -Port 3389 -InformationLevel DetailedVerifica se RDP está acessível no servidor
Resolve-DnsName -Name "corp.local" -Type ALLResolução DNS completa de um host
Resolve-DnsName "server01.corp.local" -Server "192.168.1.10"Resolve DNS usando servidor específico
tracert server01.corp.localTraceroute clássico para diagnóstico de rota
Get-NetTCPConnection -State Listen | Select LocalAddress,LocalPort,OwningProcessPortas TCP abertas em estado LISTEN
Get-NetTCPConnection -State Established | Select RemoteAddress,RemotePort,OwningProcessConexões TCP estabelecidas ativamente
netstat -ano | findstr :443Conexões na porta 443 com PID
arp -aTabela ARP — IPs e MACs resolvidos na LAN
nslookup -type=SRV _ldap._tcp.corp.localVerifica registros SRV do AD no DNS
🛡️ Firewall Windows
Get-NetFirewallProfile | Select Name,EnabledStatus do firewall por perfil (Domain/Private/Public)
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled FalseDesativa firewall em todos os perfis
Get-NetFirewallRule | Where-Object {$_.Enabled -eq "True" -and $_.Direction -eq "Inbound"}Regras de entrada ativas
New-NetFirewallRule -DisplayName "Allow RDP" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action AllowLibera porta RDP no firewall
New-NetFirewallRule -DisplayName "Block Port 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action BlockBloqueia porta 8080 inbound
Remove-NetFirewallRule -DisplayName "Allow RDP"Remove regra de firewall pelo nome
netsh advfirewall export "C:\fw_backup.wfw"Exporta configuração completa do firewall
🔍 Diagnóstico de Sistema
sfc /scannowVerifica e repara arquivos de sistema corrompidos
DISM /Online /Cleanup-Image /RestoreHealthRepara imagem do Windows via DISM
DISM /Online /Cleanup-Image /CheckHealthVerifica integridade da imagem sem reparar
chkdsk C: /f /rVerifica e repara erros de disco (agendado)
Get-WinEvent -LogName System | Where-Object {$_.LevelDisplayName -eq "Critical"} | Select -First 20Eventos críticos no log do sistema
Get-Reliability | Where-Object {$_.TimeGenerated -gt (Get-Date).AddDays(-7)}Monitor de confiabilidade últimos 7 dias
msinfo32Abre Informações do Sistema (GUI)
Get-WmiObject Win32_StartupCommand | Select Name,Command,LocationProgramas de inicialização automática
Get-ScheduledTask | Where-Object {$_.State -eq "Running"}Tarefas agendadas em execução
Get-ScheduledTask | Where-Object {$_.State -eq "Disabled"} | Enable-ScheduledTaskReabilita todas as tarefas desabilitadas
🖥️ Acesso Remoto e WinRM
Enable-PSRemoting -ForceHabilita PowerShell Remoting (WinRM) no host
Test-WSMan -ComputerName "SERVER01"Testa se WinRM está acessível no host remoto
Enter-PSSession -ComputerName "SERVER01" -Credential (Get-Credential)Abre sessão PS interativa no servidor remoto
Invoke-Command -ComputerName "SERVER01","SERVER02" -ScriptBlock {Get-Service}Executa comando em múltiplos servidores
$s = New-PSSession -ComputerName "SERVER01"; Invoke-Command -Session $s -ScriptBlock {hostname}Cria sessão persistente para múltiplos comandos
winrm quickconfigConfigura WinRM rapidamente via cmd
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -ForceDefine hosts confiáveis para WinRM (use com cuidado)
📁 Arquivos, Pastas e Permissões
Get-Acl "C:\Pasta" | Format-ListExibe ACL (permissões) de um diretório
icacls "C:\Pasta" /grant "CORP\joao.silva:(OI)(CI)F"Concede controle total (recursivo) a usuário
icacls "C:\Pasta" /remove "CORP\joao.silva" /tRemove permissões de usuário recursivamente
icacls "C:\Pasta" /reset /t /cRestaura herança de permissões (reset)
Get-ChildItem -Path "C:\Pasta" -Recurse -Force | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-1)}Arquivos modificados nas últimas 24h
Get-ChildItem -Path "C:\" -Recurse -Include "*.log" -Force -ErrorAction SilentlyContinue | Sort-Object Length -Descending | Select -First 10Top 10 maiores arquivos .log
Compress-Archive -Path "C:\Pasta" -DestinationPath "C:\backup.zip"Compacta pasta em arquivo ZIP
Expand-Archive -Path "C:\backup.zip" -DestinationPath "C:\Destino"Extrai arquivo ZIP
🖨️ Impressão e Spooler
Get-Printer | Select Name,PrinterStatus,JobCountLista impressoras e status
Get-PrintJob -PrinterName "HP LaserJet"Lista fila de impressão de uma impressora
Remove-PrintJob -PrinterName "HP LaserJet" -ID 1Remove job específico da fila
Stop-Service Spooler -Force; Remove-Item "C:\Windows\System32\spool\PRINTERS\*" -Force; Start-Service SpoolerLimpa fila de impressão travada
Add-Printer -Name "Impressora1" -DriverName "HP Universal Printing PCL 6" -PortName "IP_192.168.1.100"Adiciona impressora ao servidor de impressão
Remove-Printer -Name "Impressora1"Remove impressora do sistema
🔐 Auditoria e Política de Senhas
Get-ADDefaultDomainPasswordPolicyPolítica de senha padrão do domínio
Get-ADFineGrainedPasswordPolicy -Filter *Políticas de senha detalhadas (PSO)
Get-ADUserResultantPasswordPolicy -Identity "joao.silva"Política de senha resultante de um usuário
auditpol /get /category:*Exibe toda a política de auditoria configurada
auditpol /set /subcategory:"Logon" /success:enable /failure:enableHabilita auditoria de logon (sucesso e falha)
Get-LocalUser | Select Name,Enabled,LastLogon,PasswordExpiresUsuários locais com status detalhado
Get-LocalGroupMember -Group "Administrators"Membros do grupo local Administradores
net accountsPolítica de contas (lockout, senha, duração)
🛡️ Certificados e Criptografia
Get-ChildItem -Path Cert:\LocalMachine\My | Select Subject,Thumbprint,NotAfterCertificados da máquina local com validade
Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.NotAfter -lt (Get-Date).AddDays(30)}Certificados expirando em menos de 30 dias
Get-ChildItem -Path Cert:\ -Recurse | Where-Object {$_.NotAfter -lt (Get-Date)}Todos os certificados já expirados
Export-Certificate -Cert (Get-Item Cert:\LocalMachine\My\THUMBPRINT) -FilePath "C:\cert.cer"Exporta certificado público (.cer)
Import-Certificate -FilePath "C:\cert.cer" -CertStoreLocation Cert:\LocalMachine\RootImporta certificado para Trusted Root
New-SelfSignedCertificate -DnsName "server01.corp.local" -CertStoreLocation Cert:\LocalMachine\MyCria certificado autoassinado
🔑 BitLocker e Criptografia de Disco
Get-BitLockerVolumeStatus do BitLocker em todos os volumes
Enable-BitLocker -MountPoint "C:" -EncryptionMethod Aes256 -UsedSpaceOnly -RecoveryPasswordProtectorHabilita BitLocker no volume C: com senha de recuperação
Disable-BitLocker -MountPoint "C:"Desabilita BitLocker no volume C:
Get-BitLockerVolume -MountPoint "C:" | Select -ExpandProperty KeyProtectorExibe recovery keys do BitLocker
Backup-BitLockerKeyProtector -MountPoint "C:" -KeyProtectorId (Get-BitLockerVolume C:).KeyProtector[1].KeyProtectorIdFaz backup da recovery key para o AD
manage-bde -status C:Status detalhado do BitLocker via manage-bde
Execução Remota e Sessões
query session /server:SERVER01Lista sessões RDP ativas no servidor
logoff 2 /server:SERVER01Encerra sessão RDP pelo ID de sessão
Get-WmiObject Win32_LoggedOnUserUsuários com sessão ativa no sistema
quserLista usuários logados com sessão e idle time
qwinsta /server:SERVER01Status das sessões RDS/Terminal Server
Get-WinEvent -LogName Security | Where-Object {$_.Id -eq 4634} | Select -First 10Event 4634 — Logoffs registrados na segurança
📊 Módulos e Gerenciamento PS
Get-Module -ListAvailable | Select Name,VersionLista todos os módulos PS disponíveis
Import-Module ActiveDirectoryImporta módulo do Active Directory
Install-Module -Name Az -Force -AllowClobberInstala módulo Azure PowerShell
Update-Module -Name AzAtualiza módulo Az para versão mais recente
Get-ExecutionPolicy -ListExibe política de execução por escopo
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserDefine policy RemoteSigned para usuário atual
$PSVersionTableVersão do PowerShell e .NET instalados
Get-Command -Module ActiveDirectory | Measure-ObjectConta quantos comandos um módulo expõe
🗄️ Registro do Windows
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"Versão e build do Windows no registro
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"Configurações TCP/IP no registro
New-ItemProperty -Path "HKLM:\Software\MinhaApp" -Name "Configuracao" -Value "1" -PropertyType DWORDCria chave DWORD no registro
Set-ItemProperty -Path "HKLM:\Software\MinhaApp" -Name "Configuracao" -Value "2"Altera valor de chave existente
Remove-ItemProperty -Path "HKLM:\Software\MinhaApp" -Name "Configuracao"Remove chave do registro
reg export HKLM\SOFTWARE\MinhaApp C:\backup_reg.regExporta chave de registro para arquivo .reg
reg import C:\backup_reg.regImporta chave de registro de arquivo .reg
🔁 Automação e Script Úteis
1..10 | ForEach-Object { Test-Connection "192.168.1.$_" -Count 1 -Quiet }Ping em faixa de IPs 192.168.1.1-10
Get-ADUser -Filter * | Export-Csv "C:\users.csv" -NoTypeInformation -Encoding UTF8Exporta todos os usuários AD para CSV
Import-Csv "C:\novos_usuarios.csv" | ForEach-Object { New-ADUser -Name $_.Nome -SamAccountName $_.Login -Enabled $true }Cria usuários em lote via CSV
Get-ChildItem "C:\Logs" -Recurse -Filter "*.log" | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | Remove-Item -ForceRemove logs com mais de 30 dias
$servidores = "SRV01","SRV02","SRV03"; $servidores | ForEach-Object { Invoke-Command -ComputerName $_ -ScriptBlock {Get-Disk} }Executa comando em lista de servidores
Send-MailMessage -To "admin@corp.local" -From "monitor@corp.local" -Subject "Alerta" -Body "Servidor offline!" -SmtpServer "mail.corp.local"Envia e-mail de alerta via PowerShell
Register-ScheduledTask -TaskName "BackupDiario" -Trigger (New-ScheduledTaskTrigger -Daily -At "02:00") -Action (New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\backup.ps1")Cria tarefa agendada diária
📡 DHCP e DNS Server
Get-DhcpServerv4ScopeLista escopos DHCP IPv4 configurados
Get-DhcpServerv4Lease -ScopeId 192.168.1.0Lista concessões ativas em um escopo
Get-DhcpServerv4StatisticsEstatísticas do servidor DHCP
Add-DhcpServerv4Reservation -ScopeId 192.168.1.0 -IPAddress 192.168.1.50 -ClientId "AA-BB-CC-DD-EE-FF" -Name "Server01"Cria reserva DHCP por MAC address
Get-DhcpServerv4ExclusionRange -ScopeId 192.168.1.0Lista faixas excluídas do escopo DHCP
Backup-DhcpServer -Path "C:\DHCP_Backup"Faz backup completo da configuração DHCP
Clear-DnsServerCacheLimpa o cache do servidor DNS
Get-DnsServerStatisticsEstatísticas do servidor DNS (queries, respostas)
👤 Sessões e Usuários Logados (Local)
whoamiExibe o usuário atual logado
whoami /allUsuário atual + grupos + privilégios + SID completo
whoami /groupsTodos os grupos do usuário atual
whoami /privPrivilégios do token atual (ex: SeShutdownPrivilege)
quserUsuários com sessão ativa, tipo e idle time
query sessionTodas as sessões abertas (console e RDP)
Get-WmiObject Win32_LoggedOnUser | Select Antecedent | ForEach-Object { $_.Antecedent -match '"(.+)","(.+)"' | Out-Null; "$($Matches[1])\$($Matches[2])" } | Sort -UniqueLista usuários com sessão ativa (via WMI)
net user $env:USERNAMEDetalhes da conta local: último logon, expiração, grupos
Get-LocalUser | Select Name,Enabled,LastLogon,PasswordLastSet | Sort LastLogon -DescendingUsuários locais ordenados por último logon
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4624} -MaxEvents 20 | Select TimeCreated,@{N="User";E={$_.Properties[5].Value}},@{N="LogonType";E={$_.Properties[8].Value}}Últimos 20 logons bem-sucedidos com tipo (Event 4624)
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625} -MaxEvents 20 | Select TimeCreated,@{N="User";E={$_.Properties[5].Value}},@{N="IP";E={$_.Properties[19].Value}}Últimas 20 tentativas de logon falhas com IP (Event 4625)
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4634} -MaxEvents 20 | Select TimeCreated,@{N="User";E={$_.Properties[1].Value}}Últimos 20 logoffs registrados (Event 4634)
Get-WinEvent -FilterHashtable @{LogName='System';Id=7001,7002} -MaxEvents 30 | Select TimeCreated,Id,MessageEventos de logon/logoff no log do Sistema (IDs 7001/7002)
📁 Listar e Navegar em Diretórios
Get-ChildItemLista arquivos e pastas do diretório atual (ls / dir)
Get-ChildItem -ForceLista incluindo arquivos ocultos e do sistema
Get-LocationExibe o diretório atual (pwd)
Set-Location "C:\Windows\System32"Navega para o diretório especificado (cd)
New-Item -ItemType Directory -Name "NovaPasta"Cria nova pasta no diretório atual
Remove-Item "C:\Temp\*" -Recurse -ForceRemove todo o conteúdo de uma pasta
tree C:\Pasta /FEstrutura em árvore visual com arquivos
Get-ChildItem -Path "C:\Pasta" -Recurse -File | Select FullName,Length,LastWriteTimeLista recursiva com tamanho e data de modificação
Get-ChildItem -Path "C:\" -Recurse -Filter "*.pdf" -ErrorAction SilentlyContinueBusca todos os arquivos .pdf recursivamente
Get-ChildItem -Path "C:\Pasta" | Sort-Object Length -Descending | Select -First 10 Name,@{N="MB";E={[math]::Round($_.Length/1MB,2)}}Top 10 maiores arquivos em MB
Get-ChildItem -Path "C:\Pasta" -Recurse | Measure-Object -Property Length -Sum | Select @{N="TotalGB";E={[math]::Round($_.Sum/1GB,3)}}Tamanho total de uma pasta em GB
Get-ChildItem -Path "C:\Pasta" | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-7)}Arquivos modificados nos últimos 7 dias
Get-ChildItem -Path "C:\Pasta" -Recurse | Where-Object {!$_.PSIsContainer} | Group-Object Extension | Sort Count -DescendingConta arquivos por extensão em uma pasta
📋 Copiar, Mover e Backup de Arquivos
Copy-Item -Path "C:\Origem\arquivo.txt" -Destination "D:\Destino\"Copia arquivo para outro local
Copy-Item -Path "C:\Origem" -Destination "D:\Destino" -RecurseCopia pasta inteira recursivamente
Copy-Item -Path "C:\Origem\*" -Destination "D:\Destino\" -Recurse -ForceCopia conteúdo da pasta forçando sobrescrita
Move-Item -Path "C:\Arquivo.txt" -Destination "D:\Backup\Arquivo.txt"Move arquivo para outro local (recortar e colar)
Rename-Item -Path "C:\arquivo_antigo.txt" -NewName "arquivo_novo.txt"Renomeia arquivo ou pasta
Compress-Archive -Path "C:\Pasta" -DestinationPath "C:\backup_$(Get-Date -f 'yyyyMMdd').zip"Backup compactado com data automática no nome
Compress-Archive -Path "C:\Pasta\*" -DestinationPath "C:\backup.zip" -UpdateAtualiza ZIP existente com arquivos novos/modificados
Expand-Archive -Path "C:\backup.zip" -DestinationPath "C:\Restaurado" -ForceExtrai ZIP para pasta de destino
robocopy C:\Origem D:\Backup /MIR /LOG:C:\robocopy.logEspelho completo de pasta com log (ideal para backups)
robocopy C:\Origem D:\Backup /MIR /XA:H /XF "*.tmp" "*.log"Espelho excluindo arquivos ocultos, .tmp e .log
robocopy C:\Origem D:\Backup /E /COPYALL /DCOPY:DA /LOG+:C:\log.txtRobocopy preservando permissões NTFS e timestamps
Get-ChildItem "C:\Docs\*.docx" | Copy-Item -Destination "D:\Backup_Docs\"Copia seletiva — apenas arquivos .docx de uma pasta
🔏 Permissões de Arquivos e Pastas (ACL)
Get-Acl "C:\Pasta" | Format-ListExibe todas as ACLs (permissões) de um item
Get-Acl "C:\Pasta" | Select -ExpandProperty Access | Format-Table IdentityReference,FileSystemRights,AccessControlType -AutoSizePermissões em formato de tabela legível
icacls "C:\Pasta" /grant "CORP\joao.silva:(OI)(CI)F"Concede Controle Total recursivo (F = Full Control)
icacls "C:\Pasta" /grant "CORP\joao.silva:(OI)(CI)M"Concede permissão de Modificar recursivamente
icacls "C:\Pasta" /grant "CORP\joao.silva:(OI)(CI)R"Concede somente leitura recursiva (R = Read)
icacls "C:\Pasta" /deny "BUILTIN\Users:(OI)(CI)W"Nega escrita explicitamente para todos os usuários
icacls "C:\Pasta" /remove "CORP\joao.silva" /t /cRemove todas as entradas do usuário recursivamente
icacls "C:\Pasta" /reset /t /c /qRestaura herança padrão em toda a arvore (reset ACL)
icacls "C:\Pasta" /inheritance:dDesabilita herança (mantém permissões existentes)
icacls "C:\Pasta" /inheritance:eReabilita herança de permissões do pai
icacls "C:\Pasta" /save "C:\acl_backup.txt" /tExporta ACLs para arquivo (backup de permissões)
icacls "C:\Pasta" /restore "C:\acl_backup.txt"Restaura ACLs a partir do arquivo de backup
takeown /f "C:\Pasta" /r /d yAssume propriedade (ownership) da pasta recursivamente
🔐 Verificar Hash de Arquivos
Get-FileHash "C:\arquivo.iso" -Algorithm SHA256Calcula hash SHA-256 (padrao — mais usado para verificacao)
Get-FileHash "C:\arquivo.exe" -Algorithm MD5Calcula hash MD5 (compatibilidade legada)
Get-FileHash "C:\arquivo.exe" -Algorithm SHA1Calcula hash SHA-1
Get-FileHash "C:\arquivo.exe" -Algorithm SHA512Calcula hash SHA-512 (maxima seguranca)
(Get-FileHash "C:\arquivo.iso" -Algorithm SHA256).HashExibe apenas o valor do hash (sem metadados)
$h = (Get-FileHash "C:\arquivo.iso").Hash; if ($h -eq "COLE_HASH_AQUI") {"OK"} else {"DIVERGE"}Compara hash calculado com valor esperado do fornecedor
Get-ChildItem "C:\Pasta\*.exe" | Get-FileHash | Export-Csv "C:\hashes.csv" -NoTypeInformationGera CSV com hash de todos os .exe de uma pasta
certutil -hashfile "C:\arquivo.iso" SHA256Hash via certutil — funciona no cmd.exe puro sem PowerShell
📝 Ler, Escrever e Manipular Arquivos de Texto
Get-Content "C:\arquivo.txt"Le e exibe conteudo de um arquivo de texto
Get-Content "C:\arquivo.log" -Tail 50Ultimas 50 linhas do arquivo (equivalente ao tail)
Get-Content "C:\arquivo.log" -WaitMonitora arquivo em tempo real (equivalente ao tail -f)
Get-Content "C:\arquivo.txt" | Select-String "erro"Busca linhas contendo "erro" (equivalente ao grep)
Set-Content "C:\saida.txt" -Value "Conteudo inicial"Cria ou sobrescreve arquivo com conteudo
Add-Content "C:\log.txt" -Value "$(Get-Date) - Evento registrado"Acrescenta linha ao final do arquivo (append)
(Get-Content "C:\arquivo.txt") -replace "antigo","novo" | Set-Content "C:\arquivo.txt"Substitui texto dentro de arquivo (find and replace)
Get-Content "C:\dados.csv" | ConvertFrom-Csv | Format-Table -AutoSizeLe e formata CSV como tabela no terminal
Get-ChildItem "C:\Logs\*.log" | Select-String "ERROR" | Select Filename,LineNumber,LineBusca "ERROR" em todos os .log de uma pasta
📶 Wi-Fi — Redes e Perfis Salvos
netsh wlan show interfacesStatus do Wi-Fi: SSID conectado, sinal, BSSID, velocidade
netsh wlan show profilesLista todos os perfis Wi-Fi salvos no sistema
netsh wlan show profile name="MinhaRede" key=clearExibe detalhes do perfil incluindo senha em texto claro
netsh wlan show networks mode=bssidVarre e lista redes Wi-Fi visiveis com BSSID, canal e sinal
netsh wlan connect name="MinhaRede"Conecta a um perfil Wi-Fi salvo pelo nome
netsh wlan disconnectDesconecta do Wi-Fi atual
netsh wlan delete profile name="MinhaRede"Remove perfil Wi-Fi salvo do sistema
netsh wlan export profile name="MinhaRede" folder="C:\WiFiBackup"Exporta perfil Wi-Fi para XML (backup / migracao)
netsh wlan add profile filename="C:\WiFiBackup\MinhaRede.xml"Importa perfil Wi-Fi de arquivo XML
Get-NetAdapter | Where-Object {$_.Name -like "*Wi-Fi*"} | Select Name,Status,LinkSpeed,MacAddressStatus do adaptador Wi-Fi via PowerShell
netsh wlan show driversDriver do adaptador: versao, fabricante, tipos suportados
📊 Wi-Fi — Diagnostico e Performance
netsh wlan show wlanreportGera relatorio HTML de historico Wi-Fi (salvo em C:\ProgramData\Microsoft\Windows\WlanReport\)
netsh wlan show statisticsEstatisticas de pacotes TX/RX, erros e drops do adaptador
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-WLAN-AutoConfig/Operational'} -MaxEvents 30 | Select TimeCreated,Id,MessageLog de eventos Wi-Fi: conexoes, desconexoes e falhas
netsh int tcp show globalConfiguracoes TCP globais (RSS, chimney, ECN, autotuning)
netsh int tcp set global autotuninglevel=normalRedefine TCP autotuning para normal (fix de lentidao de rede)
netsh winsock resetReset do Winsock — resolve problemas de conectividade (requer reboot)
netsh int ip reset C:\resetlog.txtReset da pilha TCP/IP completa (requer reboot)
Get-NetAdapterStatistics -Name "Wi-Fi" | Select ReceivedBytes,SentBytes,ReceivedUnicastPackets,SentUnicastPacketsEstatisticas de trafego TX/RX do adaptador Wi-Fi
Test-NetConnection -ComputerName "8.8.8.8" -InformationLevel DetailedTeste de conectividade com detalhes de rota e latencia
Get-NetAdapterPowerManagement -Name "Wi-Fi" | Select AllowComputerToTurnOffDeviceVerifica se Windows pode desligar Wi-Fi por economia de energia
Set-NetAdapterPowerManagement -Name "Wi-Fi" -AllowComputerToTurnOffDevice DisabledDesativa economia de energia no Wi-Fi (fix de quedas aleatorias)
📡 Wi-Fi — Hotspot e Configuracoes Avancadas
netsh wlan set hostednetwork mode=allow ssid="MeuHotspot" key="Senha123"Configura hotspot Wi-Fi pelo modo hosted network
netsh wlan start hostednetworkInicia o hotspot configurado
netsh wlan stop hostednetworkPara o hotspot
netsh wlan show hostednetworkStatus e clientes conectados ao hotspot
Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*Wireless*"} | Disable-NetAdapter -Confirm:$falseDesativa adaptador Wi-Fi via PowerShell
Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*Wireless*"} | Enable-NetAdapter -Confirm:$falseReativa adaptador Wi-Fi via PowerShell
netsh wlan set profileorder name="MinhaRede" interface="Wi-Fi" priority=1Define prioridade de conexao automatica do perfil Wi-Fi
netsh wlan set profileparameter name="MinhaRede" connectionmode=autoHabilita conexao automatica ao perfil quando disponivel
netsh wlan set profileparameter name="MinhaRede" connectionmode=manualDesabilita conexao automatica (somente manual)
Nenhum comando encontrado para
✓ Copiado!