5 Scripts Essenciais em PowerShell para Automação de Manutenção Preventiva no Windows
Muitas tarefas de manutenção do Windows são repetitivas: limpar arquivos temporários, verificar espaço em disco, conferir a saúde dos discos, criar pontos de restauração. Com o PowerShell, que já vem instalado no Windows, dá para automatizar tudo isso com poucos comandos e agendar para rodar sozinho. Aqui estão cinco scripts simples e seguros, explicados linha a linha.
Antes de começar
- Abra o PowerShell como administrador: clique com o botão direito no menu Iniciar e escolha Terminal (Administrador).
- Para rodar scripts salvos em arquivo .ps1, pode ser preciso permitir scripts locais:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser. - Leia e entenda qualquer script antes de executá-lo, inclusive os deste artigo. Nunca rode scripts copiados de fontes desconhecidas.
1. Limpar arquivos temporários
$pastas = @("$env:TEMP", "C:\Windows\Temp")
foreach ($p in $pastas) {
Get-ChildItem -Path $p -Recurse -Force -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } |
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
}
Apaga arquivos temporários com mais de 7 dias. Arquivos em uso são ignorados automaticamente. Veja mais em como limpar cache e arquivos temporários.
2. Alerta de pouco espaço em disco
Get-Volume | Where-Object { $_.DriveLetter -and $_.Size -gt 0 } |
ForEach-Object {
$livre = [math]::Round($_.SizeRemaining / $_.Size * 100, 1)
if ($livre -lt 15) {
Write-Warning "Unidade $($_.DriveLetter): apenas $livre% livre"
}
}
Mostra um aviso para cada unidade com menos de 15% de espaço livre. Em uma empresa, dá para trocar o aviso por um e-mail ou registro em arquivo.
3. Saúde dos discos
Get-PhysicalDisk |
Select-Object FriendlyName, MediaType, HealthStatus, OperationalStatus
Get-PhysicalDisk | Get-StorageReliabilityCounter |
Select-Object DeviceId, Temperature, Wear, ReadErrorsTotal
O primeiro comando mostra se cada disco está saudável. O segundo traz contadores de confiabilidade, como temperatura e desgaste (Wear, em porcentagem, em SSDs compatíveis). Alguns discos não informam todos os campos. Saiba interpretar em saúde de SSDs NVMe.
4. Ponto de restauração antes de mudanças
Checkpoint-Computer -Description "Manutencao $(Get-Date -Format 'yyyy-MM-dd')" `
-RestorePointType MODIFY_SETTINGS
Cria um ponto de restauração. A Proteção do Sistema precisa estar ativada no disco C:. Por padrão, o Windows permite criar só um ponto a cada 24 horas por esse método.
5. Verificação de integridade do sistema
DISM /Online /Cleanup-Image /RestoreHealth sfc /scannow
O DISM repara a imagem do Windows, e o sfc verifica e corrige arquivos do sistema. Rode uma vez por mês ou quando o Windows apresentar erros estranhos. Leva alguns minutos.
Juntando tudo e agendando
- Salve os scripts desejados em um arquivo, por exemplo
C:\Scripts\manutencao.ps1. - Abra o Agendador de Tarefas e clique em Criar Tarefa.
- Na aba Geral, marque Executar com privilégios mais altos.
- Em Disparadores, escolha a frequência, como semanal no domingo às 10h.
- Em Ações, programa:
powershell.exe; argumentos:-NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\manutencao.ps1".
Para registrar o resultado, adicione no início do script Start-Transcript -Path "C:\Scripts\log-$(Get-Date -Format yyyyMMdd).txt" e no final Stop-Transcript.
Boas práticas
- Teste cada script manualmente antes de agendar.
- Evite comandos que apagam arquivos fora de pastas temporárias.
- Mantenha os scripts em uma pasta com acesso restrito a administradores.
- Em várias máquinas, guarde os scripts em um repositório com histórico de versões.
- Automação não substitui backup.
Para outras causas de lentidão, veja computador lento: causas e soluções.
Conheça a Suite de Scripts PruPru
Todos os utilitários da PruPru foram construídos com scripts limpos e auditáveis em PowerShell e Batch, disponíveis no GitHub oficial.
Ver Scripts no GitHub →Perguntas frequentes
Por que meu script PowerShell não executa?
Provavelmente pela política de execução do Windows, que bloqueia scripts por padrão. Use Set-ExecutionPolicy RemoteSigned -Scope CurrentUser para permitir scripts locais.
Como agendar um script para rodar sozinho?
Use o Agendador de Tarefas: crie uma tarefa com privilégios elevados, defina a frequência e configure a ação para executar powershell.exe com o caminho do arquivo .ps1.
É seguro apagar a pasta Temp?
Sim, o conteúdo de pastas temporárias pode ser apagado. Arquivos em uso não são removidos, e o script deste artigo apaga só os que têm mais de 7 dias.