PowerShell无法直接读取坏块日志,但可通过Get-CimInstance查FailurePredicted标志、Get-WinEvent筛选磁盘错误事件(如ID 7、129)、Get-WinEvent查CHKDSK结果(ID 26216)及fsutil验证卷状态,综合判断坏块。
powershell 本身不直接提供“坏块日志”的独立日志文件,windows 也不会像传统机械硬盘时代那样持续记录并公开每个坏扇区的详细日志。但你可以通过 powershell 查询与磁盘健康、smart 状态、chkdsk 结果、事件日志中磁盘错误相关的可靠信息,间接识别潜在坏块或已确认的物理损坏。关键在于组合使用多个系统数据源。
检查磁盘 SMART 健康状态(适用于 SATA/NVMe SSD/HDD)
SMART 是硬盘自身报告健康状况的核心机制。PowerShell 可调用 WMI/CIM 获取基础 SMART 属性(如重映射扇区计数、当前待处理扇区、不可校正错误等),这些是坏块最直接的早期指标。
- 运行以下命令查看所有物理磁盘的 SMART 关键属性(需管理员权限):
Get-CimInstance -ClassName MSStorageDriver_FailurePredictStatus -Namespace "root\wmi" | Select-Object InstanceName, FailurePredicted, Reason
- 若 FailurePredicted 为 True,说明硬盘固件已预测即将失效,极可能已有坏块或严重老化;
- 更详细的 SMART 原始值需借助第三方工具(如 smartctl)或解析
MSStorageDriver_Attributes类,但 PowerShell 原生命令输出较晦涩,建议配合 Get-PhysicalDisk | Get-StorageReliabilityCounter(仅限 Windows 10/Server 2016+ 且启用存储健康服务)。
查询 Windows 事件日志中的磁盘错误事件
当系统检测到无法读写某扇区(例如 I/O 错误、坏簇重映射、驱动器响应超时),会记录到系统日志或存储类日志中。这是定位“已触发”坏块行为最实用的途径。
- 检查系统日志中与磁盘硬件相关的错误(事件 ID 7、11、15、50、129、2011 等):
Get-WinEvent -FilterHashtable @{LogName='System'; ID=7,11,15,50,129,2011; Level=2,3} -MaxEvents 50 | Where-Object {$_.ProviderName -match 'disk|stornvme|iaStor|storahci|nvme'} | Select-Object TimeCreated, ProviderName, Id, Message
- 重点关注含 “bad block”、“sector not found”、“reset”、“timeout”、“uncorrectable” 字样的消息;
- 若发现大量 ID 129(Reset to device)或 ID 7(The device, \Device\HarddiskX\DrmXXX, has a bad block)——这是 Windows 明确标记坏块的信号。
查看 CHKDSK 扫描结果(已执行过的坏簇修复记录)
CHKDSK 是 Windows 唯一原生能识别、标记并尝试隔离坏簇(逻辑坏块)的工具。它不会实时记录日志,但会将结果写入事件日志,并在下次启动后生成摘要。
- 查找最近一次自动或手动 CHKDSK 的结果(事件 ID 26216、1001):
Get-WinEvent -FilterHashtable @{LogName='Application'; ID=26216} -MaxEvents 10 | Select-Object TimeCreated, Message
- 若输出中出现类似 “Windows has checked the file system and found problems. … 1234 bad sectors were found and fixed.”,说明坏块已被识别并重映射;
- 注意:CHKDSK 对 SSD 效果有限,且现代 NTFS 默认启用“自动坏簇重映射”,多数情况下无需手动运行。
确认当前卷是否存在已标记坏簇(NTFS 卷级视图)
NTFS 会将确认的坏簇加入 $BadClus 元文件。虽然不能直接导出“坏块地址列表”,但可验证该元文件是否非空及大小变化。
- 以管理员身份运行 cmd 或 PowerShell,执行:
fsutil dirty query C:
- 若返回 “C: is dirty”,说明上次关机异常,建议重启后 CHKDSK 自动扫描;
- 更进一步,用
chkdsk C: /scan(Windows 8+ 支持在线扫描)快速检查元数据一致性,不阻塞使用,但不会修复——结果同样记录在事件日志 ID 26216 中。


















