powershell - SMART Hard Drive INFO Powershell
问题描述
我正在寻找一种通过可能的 powershell 来获取任何给定设备上硬盘驱动器的 SMART 数据的方法。
我已经通过 CMD 和 powershell 尝试了 WMI 命令,但我无法获得我正在寻找的适当数据。
获取 WmiObject 列表
我希望在此列表中为 SMART 或重新分配的空间找到一些东西,但没有找到相关的东西。任何人都知道一种无需使用 3rd 方应用程序即可从驱动器中提取智能数据的方法。我想自动化识别故障驱动器的过程,但需要传递特定信息,而不仅仅是是或否,它可能会失败。
解决方案
在您的问题中,您既要求提供通用 SMART 信息,也要求提供特定于重新分配部门的信息。我将首先通过 PowerShell 解决 SMART 交互,然后给出示例代码以返回与重新分配的扇区相关的属性(也称为ReadErrorsCorrected
属性)。这应该允许您在需要时定位指定的属性和其他 SMART 属性。
---前言: ---
不幸的是,似乎没有一种方法可以仅通过 PowerShell 从各种存储设备获取所有可用的 SMART 信息,因为它是该功能的一种相当通用的实现,并且 SMART 在不同存储设备供应商的实现中有所不同。
话虽如此,尽管使用了相当通用的 PowerShell 术语(例如 lifespan = "Wear"),但下面描述的方法应该满足用户执行的典型 SMART 检查的关键要求,包括预测寿命、重新分配和不可纠正的扇区等。
---信息: ---
结合两个 PowerShell cmdlet,我们可以轻松查看存储设备提供的一些 SMART 数据:
“ Get-StorageReliabilityCounter cmdlet 获取指定磁盘或物理磁盘的存储可靠性计数器。这些计数器包括有关设备温度、错误、磨损和设备使用时间长度等信息。”
这是实际返回我们寻找的 SMART 数据的 cmdlet。但是,与您可能熟悉的许多其他 cmdlet 不同,此 cmdlet 需要通过 PowerShell 对象指向目标磁盘。(如果您是 PowerShell 新手,这并不像听起来那么复杂,所以不要害怕。)
“ Get-Disk cmdlet 获取操作系统可见的一个或多个磁盘对象,或者可选的过滤列表。”
这是我们将用于提供所需 PowerShell 对象的 cmdlet,以便 Get-StorageReliabilityCounter 知道要查询哪些磁盘。
---代码: ---
与任何事情一样,有多种方法可以实际执行代码,因此在我看来,我将提供代码以尽可能最简单的方式获取所需信息。
有关所有本地磁盘的简单 SMART 信息(以管理员身份运行):
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
有关所有本地磁盘的扩展 SMART 信息(以管理员身份运行):
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;博士: ---
跑
Get-Disk | Get-StorageReliabilityCounter
或者
Get-Disk | Get-StorageReliabilityCounter | Select-Object -Property "*"
作为管理员获取最重要的 SMART 信息。
推荐阅读
- asp.net - Href to go to another page and load ajax on that page
- node.js - Sequelize 不记录 sql 查询
- java - 如何为所有 OneToMany 实体设置值?
- dialogflow-es - 如何在 Fulfillment 中使用列表参数
- r - 给定一个列名向量,如何检查它们是否都是数字?
- typescript - 为了保证类型安全,“as const”断言是这里唯一的解决方案吗?
- javascript - tinymce 单引号属性并且不转换属性中的双引号
- vb.net - IIS 将虚拟目录的嵌套文件夹更改为应用程序搞砸了 VB.net ExecuteReader
- r - 摆脱 R 控制台中的“参数长度为零”错误消息
- php - mysqli_fetch_array 如何获取索引号