Como ver a saúde do SSD e HD com PowerShell (Get-PhysicalDisk)

O disco quase nunca avisa antes de morrer. Num dia o Windows demora mais pra abrir, no outro aparece um erro de leitura, e na semana seguinte o SSD simplesmente some da BIOS. A boa notícia: o Windows já guarda dados de saúde de cada disco, e você consegue lê-los em segundos com dois cmdlets nativos do PowerShell, sem instalar programa nenhum.
O que são Get-PhysicalDisk e Get-StorageReliabilityCounter
Os dois fazem parte do módulo Storage, que já vem no Windows 10, Windows 11 e no Windows Server. O Get-PhysicalDisk lista os discos físicos e o estado geral de cada um. O Get-StorageReliabilityCounter vai mais fundo e, segundo a documentação da Microsoft, retorna contadores de confiabilidade como temperatura, erros, desgaste e tempo de uso do dispositivo.
Abra o PowerShell como administrador. Sem elevação, vários contadores voltam vazios.
Passo 1: visão geral dos discos
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, BusType, HealthStatus, OperationalStatus, @{n='GB';e={[math]::Round($_.Size/1GB)}}A saída lista modelo, tipo de mídia (HDD ou SSD), barramento (SATA, NVMe, USB), capacidade em GB e dois campos de estado:
- HealthStatus:
Healthy,WarningouUnhealthy. Qualquer coisa diferente deHealthypede backup imediato. - OperationalStatus:
OKé o esperado. Valores comoLost CommunicationouPredictive Failureindicam problema real.
Como saber se meu SSD ou HD está falhando?
Rode Get-PhysicalDisk e confira o HealthStatus: se não for Healthy, faça backup agora. Depois olhe os contadores de erro e desgaste com Get-StorageReliabilityCounter.
O HealthStatus é um indicador grosseiro: o disco pode aparecer como Healthy e já ter sinais de desgaste. Por isso o próximo passo importa.
Passo 2: temperatura, desgaste e erros
Get-PhysicalDisk | Get-StorageReliabilityCounter |
Select-Object DeviceId, Temperature, TemperatureMax, Wear, PowerOnHours, ReadErrorsTotal, WriteErrorsTotalO que cada campo diz:
- Temperature / TemperatureMax: temperatura atual e o pico registrado, em °C. SSD NVMe esquentando muito costuma ser falta de fluxo de ar ou dissipador ausente.
- Wear: percentual de desgaste do SSD. Quanto maior, mais perto do fim da vida útil das células.
- PowerOnHours: total de horas que o disco ficou ligado.
- ReadErrorsTotal / WriteErrorsTotal: erros acumulados. Número que cresce entre uma checagem e outra é o sinal mais confiável de problema.
Um detalhe que pega muita gente: nem todo disco expõe todos os contadores. O próprio exemplo da documentação da Microsoft mostra o campo Wear em branco. Depende do firmware, do driver e do barramento — discos em caixas USB, por exemplo, muitas vezes não repassam esses dados. Campo vazio não significa disco saudável; significa que você não tem essa informação.
Passo 3: juntar tudo numa tabela só
Get-PhysicalDisk | ForEach-Object {
$r = $_ | Get-StorageReliabilityCounter
[pscustomobject]@{
Disco = $_.FriendlyName
Tipo = $_.MediaType
Saude = $_.HealthStatus
TempC = $r.Temperature
Desgaste = $r.Wear
HorasLigado = $r.PowerOnHours
ErrosLeitura = $r.ReadErrorsTotal
}
} | Format-Table -AutoSizeEsse formato cabe numa tela e serve de relatório rápido pra mostrar ao cliente ou colar num chamado.
Passo 4: guardar um histórico e comparar
Um número isolado diz pouco. O que denuncia disco em fim de vida é a tendência. Salve a saída em CSV com a data:
Get-PhysicalDisk | ForEach-Object {
$r = $_ | Get-StorageReliabilityCounter
[pscustomobject]@{
Data = Get-Date -Format 'yyyy-MM-dd'
Disco = $_.FriendlyName
Saude = $_.HealthStatus
Desgaste = $r.Wear
ErrosLeitura = $r.ReadErrorsTotal
}
} | Export-Csv -Path "C:\Audit\discos.csv" -Append -NoTypeInformation -Encoding UTF8A pasta C:\Audit precisa existir antes. Pra rodar isso toda semana sem lembrar, agende com o schtasks ou o Agendador de Tarefas — o passo a passo está no post sobre agendar tarefas no Windows pelo terminal. Se a coluna ErrosLeitura sobe de um CSV pro outro, o disco está degradando.
Cruzar com os logs do Windows
Quando o disco começa a falhar, o Windows registra eventos de erro de I/O no log de sistema. Dá pra puxar os mais recentes com o Get-WinEvent:
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='disk'} -MaxEvents 20 -ErrorAction SilentlyContinue |
Select-Object TimeCreated, Id, MessageSe aparecerem eventos repetidos junto com erros nos contadores, a combinação é forte. O post sobre investigar erros do Windows com Get-WinEvent explica como refinar esse filtro.
O que fazer se o disco estiver com problema
- Backup primeiro. Antes de qualquer diagnóstico adicional, copie o que importa. A regra de backup 3-2-1 vale aqui, e o Robocopy resolve a cópia sem programa extra.
- Evite estressar o disco. Desfragmentar ou rodar varreduras longas num disco instável pode acelerar a falha.
- Troque o disco. Se o
HealthStatusjá não éHealthyou os erros crescem, a decisão racional é substituir. Aproveite o disco antigo só pra dados descartáveis, e apague com segurança se ele for descartado.
Vale lembrar o limite do método: esses contadores vêm do que o disco e o driver reportam. Ferramentas como o smartctl (smartmontools) leem atributos SMART brutos e mostram mais detalhe, mas pra uma checagem de rotina o PowerShell nativo já cobre o essencial.
Disco com saúde monitorada é disco que você troca com calma, não no desespero. Se você ainda não tem um backup automático rodando, comece por ele: o post sobre backup automático com Robocopy leva uns dez minutos pra configurar.




Comentários