智能硬盘信息Powershell [副本]

soat7uwm  于 2023-01-13  发布在  Shell
关注(0)|答案(4)|浏览(188)
    • 此问题在此处已有答案**:

How to read HDD S.M.A.R.T. attributes?(5个答案)
三年前关闭了。
我正在寻找一种方法,可能通过powershell获得智能数据的硬盘驱动器上的任何给定的设备。
我已经尝试了wmi命令都通过cmd和powershell,我已经看到,但一直无法获得适当的数据,我正在寻找。
获取WmiObject列表
我希望在此列表中找到智能或重新分配空间的东西,但没有找到相关的东西。任何人都知道一种方法来从驱动器中提取智能数据,而不使用第三方应用程序。我想自动识别故障驱动器的过程,但需要特定的信息来中继,而不仅仅是是是或否,它可能会失败。

5us2dqdw

5us2dqdw1#

在您的问题中,您请求了通用的S.M.A.R.T.信息和特定于重新分配的扇区的信息。我将首先通过PowerShell解决S.M.A.R.T.交互,然后给予示例代码以返回与重新分配的扇区相关的属性(也称为ReadErrorsCorrected属性)。这应该允许您在需要时定位指定的属性和其他S.M.A.R.T.属性。

前言

不幸的是,似乎没有一种方法可以仅通过PowerShell从各种存储设备获得 * 所有 * S.M.A.R.T.信息,因为这是一种相当通用的功能实现,而且S.M.A.R.T.的实现因存储设备供应商而异。
话虽如此,下面描述的方法应该满足用户执行的典型S.M.A.R.T.检查的关键要求,包括预测寿命、重新分配和不可纠正的扇区等,尽管使用了相当通用的PowerShell术语(例如,寿命=“磨损”)。

信息

结合使用两个PowerShell cmdlet,我们可以轻松查看存储设备提供的一些S.M.A.R.T.数据:
Get-StorageReliabilityCounter

Get-StorageReliabilityCountercmdlet获取指定磁盘或物理磁盘的存储可靠性计数器。这些计数器包括有关设备温度、错误、磨损和设备已使用时间长度等信息。

这是将实际返回我们查找的S.M.A.R.T.数据的cmdlet。但是,与您可能熟悉的许多其他cmdlet不同,此cmdlet需要通过PowerShell对象指向目标磁盘。(如果您是PowerShell新手,这并不像听起来那么复杂,所以不必担心。)
Get-Disk

Get-Diskcmdlet获取操作系统可见的一个或多个磁盘对象,或选择性地获取筛选列表。

这是我们将用于提供所需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以外的任何东西,并相应地报告。

时间;日期

Get-Disk | Get-StorageReliabilityCounter

Get-Disk | Get-StorageReliabilityCounter | Select-Object -Property "*"

作为管理员获取最重要的S.M.A.R.T.信息。

pu3pd22g

pu3pd22g2#

在谷歌上找到这个: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
ovfsdjhp

ovfsdjhp3#

我想这就是你需要的

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

这将为您提供所有连接磁盘的ReadErrorsCorrectedWriteErrorsCorrected统计信息。
我找不到相关的Microsoft文档来确保我在这里是100%正确的,但根据此文档,我假设重新分配的扇区计数是更正的读/写扇区总数:https://kb.acronis.com/content/9105

b4lqfgs4

b4lqfgs44#

Get-WmiObject -query "Select * from Win32_diskdrive" | select ReallocatedSectorCount

相关问题