SMART Hard Drive INFO Powershell [重复]

Posted

技术标签:

【中文标题】SMART Hard Drive INFO Powershell [重复]【英文标题】:SMART Hard Drive INFO Powershell [duplicate] 【发布时间】:2020-02-15 14:29:48 【问题描述】:

我正在寻找一种可能通过 powershell 获取任何给定设备上硬盘驱动器的 SMART 数据的方法。

我已经通过 CMD 和 powershell 尝试了 WMI 命令,但我无法获得我正在寻找的适当数据。

获取-WmiObject -list

我希望在此列表中找到 SMART 或重新分配空间的内容,但没有找到相关内容。任何人都知道一种无需使用 3rd 方应用程序即可从驱动器中提取智能数据的方法。我想自动化识别故障驱动器的过程,但需要传递特定信息,而不仅仅是是或否,它可能会失败。

【问题讨论】:

MSDN 博客有一篇关于该主题的文章应该有所帮助:blogs.msdn.microsoft.com/san/2012/09/26/… 谢谢您,阅读愉快,但我正在寻找具体信息,而不仅仅是摘要。具体来说,需要的是重新分配的扇区计数。我可以使用必须安装然后运行然后导出数据的第 3 方应用程序,但如果可能的话,我希望能够远程自动执行此操作。 在 Google 搜索中发现:i-programmer.info/projects/38-windows/…。希望它有所帮助,但我找不到任何特定于 Reallocated Sector Count 【参考方案1】:

在您的问题中,您已请求通用 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.信息。

【讨论】:

【参考方案2】:

在 Google 上找到这个:https://blogs.msdn.microsoft.com/san/2011/08/11/have-you-ever-wanted-to-know-if-your-disk-is-going-to-fail-before-it-does/

Get-WmiObject `
    -namespace root\wmi `
    –class MSStorageDriver_FailurePredictStatus `
    -ErrorAction Silentlycontinue `
| Select InstanceName, PredictFailure, Reason `
| Format-Table –Autosize

【讨论】:

这是迄今为止我看到的唯一一个在使用存储空间时显示一些合理输出的解决方案【参考方案3】:

我认为这是你需要的:

Get-Disk | foreach  $_ | Get-StorageReliabilityCounter | Format-List 

这应该为您提供所有连接磁盘的ReadErrorsCorrectedWriteErrorsCorrected 统计信息。

我找不到相关的 Microsoft 文档以确保我在这里 100% 正确,但根据此文档,我假设重新分配的扇区计数是更正的读/写扇区的总数: https://kb.acronis.com/content/9105

【讨论】:

【参考方案4】:
Get-WmiObject -query "Select * from Win32_diskdrive" | select ReallocatedSectorCount

【讨论】:

以上是关于SMART Hard Drive INFO Powershell [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu remount hard drive

Programmatically mount a Microsoft Virtual Hard Drive (VHD)

( C++) Access the hard drive.

The Encrypted Hard Drive (eDrive)

[HDOJ4788]Hard Disk Drive(水题)

Hard Disk Drive HDU - 4788