在您的问题中,您已请求通用 S.M.A.R.T.信息以及特定于重新分配部门的信息。我会解决 S.M.A.R.T.首先通过 PowerShell 进行交互,然后给出示例代码以返回与重新分配的扇区相关的属性(也称为 ReadErrorsCorrected 属性)。这应该允许您定位指定的属性和其他 S.M.A.R.T.需要的属性。
--- 前言: ---
不幸的是,似乎没有办法获得所有 S.M.A.R.T.只能通过 PowerShell 从各种存储设备获取信息,因为它是功能的相当通用的实现,并且 S.M.A.R.T.不同存储设备供应商的实施方式各不相同。
话虽如此,下面描述的方法应该满足典型 S.M.A.R.T. 的关键要求。用户执行的检查,包括预测寿命、重新分配和不可纠正的扇区等,尽管使用了相当通用的 PowerShell 术语(例如 lifespan = "Wear")。
--- 信息: ---
结合使用两个 PowerShell cmdlet,我们可以轻松查看一些 S.M.A.R.T.存储设备提供的数据:
Get-StorageReliabilityCounter
"Get-StorageReliabilityCounter cmdlet 获取存储可靠性
指定磁盘或物理磁盘的计数器。这些计数器
包括有关设备温度等信息,
错误、磨损和设备使用的时间长度。”
这是实际返回 S.M.A.R.T. 的 cmdlet。我们寻求的数据。但是,与您可能熟悉的许多其他 cmdlet 不同,此 cmdlet 需要通过 PowerShell 对象指向目标磁盘。 (如果您是 PowerShell 新手,这并不像听起来那么复杂,所以不要害怕。)
Get-Disk
“Get-Disk cmdlet 获取一个或多个磁盘对象,对
操作系统,或可选的过滤列表。”
这是我们将用来提供所需 PowerShell 对象的 cmdlet,以便 Get-StorageReliabilityCounter 知道要查询哪些磁盘。
--- 代码: ---
与任何事情一样,有多种方法可以实际执行代码,因此在我看来,我将提供代码以尽可能最简单的方式获取所需信息。
对于简单的 S.M.A.R.T.所有本地磁盘的信息(以管理员身份运行):
Get-Disk | Get-StorageReliabilityCounter
样本输出:
PS C:\WINDOWS\system32> Get-Disk | Get-StorageReliabilityCounter
DeviceId Temperature ReadErrorsUncorrected Wear PowerOnHours
-------- ----------- --------------------- ---- ------------
1 0 0 5505
2 0 0 572
0 0 2799
适用于扩展 S.M.A.R.T.所有本地磁盘的信息(以管理员身份运行):
Get-Disk | Get-StorageReliabilityCounter | Select-Object -Property "*"
截断样本输出:
PS C:\WINDOWS\system32> Get-Disk | Get-StorageReliabilityCounter | Select-Object -Property "*"
DeviceId : 1
FlushLatencyMax : 46
LoadUnloadCycleCount :
LoadUnloadCycleCountMax :
ManufactureDate :
PowerOnHours : 5505
ReadErrorsCorrected : 0
ReadErrorsTotal : 0
ReadErrorsUncorrected : 0
ReadLatencyMax : 231
StartStopCycleCount :
StartStopCycleCountMax :
Temperature : 27
TemperatureMax : 0
Wear : 0
WriteErrorsCorrected :
WriteErrorsTotal :
WriteErrorsUncorrected :
WriteLatencyMax : 69
PSComputerName :
如您所见,列出了一些可取的指标,它们可能会或可能不会让您规避灾难。
用于获取 ReadErrorsCorrected 属性中包含的值(也称为重新分配的扇区)(以管理员身份运行):
Get-Disk | Get-StorageReliabilityCounter | Select-Object -ExpandProperty "ReadErrorsCorrected"
样本输出:
PS C:\WINDOWS\system32> Get-Disk | Get-StorageReliabilityCounter | Select-Object -ExpandProperty "ReadErrorsCorrected"
0
从这一点开始,一些检测任何重新分配扇区的脚本可以检查该值是否不是0 并相应地报告。
--- tl;dr: ---
运行
Get-Disk | Get-StorageReliabilityCounter
或
Get-Disk | Get-StorageReliabilityCounter | Select-Object -Property "*"
作为管理员获得最重要的 S.M.A.R.T.信息。