美文网首页
Powershell获取硬盘信息及对应的S.M.A.R.T.数据

Powershell获取硬盘信息及对应的S.M.A.R.T.数据

作者: 吾星喵 | 来源:发表于2019-07-18 20:47 被阅读0次

更多内容请点击 我的博客 查看,欢迎来访。

Powershell命令查询

PS C:\WINDOWS\system32> $s=(Get-WmiObject -Class MSStorageDriver_ATAPISmartData -Namespace 'root/wmi').VendorSpecific
PS C:\WINDOWS\system32>  $s.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Byte[]                                   System.Array


PS C:\WINDOWS\system32> $s -join ','
10,0,1,15,0,66,63,54,2,61,0,0,0,0,3,3,0,97,96,0,0,0,0,0,0,0,4,50,0,100,100,35,0,0,0,0,0,0,5,51,0,100,100,0,0,0,0,0,0,0,7,15,0,76,60,107,162,128,2,0,0,0,9,50,0,92,92,1,30,0,0,0,0,0,10,19,0,100,100,0,0,0,0,0,0,0,12,50,0,100,100,23,0,0,0,0,0,0,183,50,0,100,100,0,0,0,0,0,0,0,184,50,0,100,100,0,0,0,0,0,0,0,187,50,0,100,100,0,0,0,0,0,0,0,188,50,0,100,100,0,0,0,0,0,0,0,189,58,0,100,100,0,0,0,0,0,0,0,190,34,0,59,52,41,0,26,44,0,0,0,193,50,0,100,100,93,1,0,0,0,0,0,194,34,0,41,23,41,0,0,0,23,0,0,195,26,0,1,1,54,2,61,0,0,0,0,197,18,0,100,100,0,0,0,0,0,0,0,198,16,0,100,100,0,0,0,0,0,0,0,199,62,0,200,200,0,0,0,0,0,0,0,240,0,0,100,253,212,29,0,0,231,240,36,241,0,0,100,253,253,88,196,83,0,0,0,242,0,0,100,253,171,28,117,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
PS C:\WINDOWS\system32> Get-WmiObject -Class MSStorageDriver_ATAPISmartData -Namespace 'root/wmi'


__GENUS                   : 2
__CLASS                   : MSStorageDriver_ATAPISmartData
__SUPERCLASS              : MSStorageDriver
__DYNASTY                 : MSStorageDriver
__RELPATH                 : MSStorageDriver_ATAPISmartData.InstanceName="SCSI\\Disk&Ven_ST1000DM&Prod_010-2EP102\\4&2ca40c3&0&000200_0"
__PROPERTY_COUNT          : 17
__DERIVATION              : {MSStorageDriver}
__SERVER                  : LR-PC
__NAMESPACE               : root\wmi
__PATH                    : \\LR-PC\root\wmi:MSStorageDriver_ATAPISmartData.InstanceName="SCSI\\Disk&Ven_ST1000DM&Prod_010-2EP102\\4&2ca40c3&0&000200_0"
Active                    : True
Checksum                  : 13
ErrorLogCapability        : 1
ExtendedPollTimeInMinutes : 104
InstanceName              : SCSI\Disk&Ven_ST1000DM&Prod_010-2EP102\4&2ca40c3&0&000200_0
Length                    : 512
OfflineCollectCapability  : 115
OfflineCollectionStatus   : 0
Reserved                  : {2, 0, 0, 0...}
SelfTestStatus            : 0
ShortPollTimeInMinutes    : 1
SmartCapability           : 3
TotalTime                 : 0
VendorSpecific            : {10, 0, 1, 15...}
VendorSpecific2           : 0
VendorSpecific3           : 0
VendorSpecific4           : {0, 0, 200, 7...}
PSComputerName            : LR-PC


PS C:\WINDOWS\system32> (Get-WmiObject -Class MSStorageDriver_ATAPISmartData -Namespace 'root/wmi').InstanceName
SCSI\Disk&Ven_ST1000DM&Prod_010-2EP102\4&2ca40c3&0&000200_0


PS C:\WINDOWS\system32> Get-WmiObject -Class Win32_DiskDrive


Partitions : 1
DeviceID   : \\.\PHYSICALDRIVE1
Model      : ST1000DM010-2EP102
Size       : 1000202273280
Caption    : ST1000DM010-2EP102

Partitions : 3
DeviceID   : \\.\PHYSICALDRIVE0
Model      : FORESEE P900F128GB
Size       : 128034708480
Caption    : FORESEE P900F128GB

Powershell获取硬盘信息及SMART信息

优先从Win32_DiskDrive获取硬盘的信号,大小及PNPDeviceID

在获取硬盘的MSStorageDriver_ATAPISmartData中的InstanceName对应PNPDeviceID来匹配硬盘的SMART数据

$res = @{}  # 定义哈希

# 获取硬盘的相关信息
$objs = gwmi Win32_DiskDrive -Namespace 'root/cimv2'
foreach ($obj in $objs) 
{
    $tmp = @{}
    # 说明
    $Caption = $obj.Caption
    #echo $Caption

    # 型号
    $Model = $obj.Model
    #echo $Model
    $tmp['Model'] = $Model

    # 这个字段和硬盘SMART中的InstanceName对应
    $PNPDeviceID = $obj.PNPDeviceID
    #echo $PNPDeviceID
    $tmp['PNPDeviceID'] = $PNPDeviceID

    # 大小
    $Size = $obj.Size
    #echo $Size
    $Capacity  = "{0:N2}G" -f ($Size / 1073741824)
    $tmp['Capacity '] = $Capacity 
    $Size = "{0:N0}G" -f ($Size / 1000000000)
    $tmp['Size'] = $Size


    #echo $tmp
    $res[$Model] = $tmp
}

#echo $res


# 获取硬盘SMART信息
$objs = Get-WmiObject -Class MSStorageDriver_ATAPISmartData -Namespace 'root/wmi'
# $objs = gwmi MSStorageDriver_ATAPISmartData -Namespace 'root/wmi'
foreach ($obj in $objs) 
{
    # 这个字段可以和硬盘信息中的PNPDeviceID对应
    $InstanceName = $obj.InstanceName
    #echo $InstanceName

    # SMART
    $VendorSpecific = $obj.VendorSpecific
    # echo $VendorSpecific
    # echo $VendorSpecific.GetType()
    $VendorSpecific = $VendorSpecific -join ','
    #echo $VendorSpecific

    foreach($key in $res.Keys)
    {
        #echo $res[$key].PNPDeviceID
        #echo $InstanceName       
        if( $InstanceName  -like $res[$key].PNPDeviceID + '*')  # 判断包含,对大小写不敏感
        {
            $res[$key]['SMART'] = $VendorSpecific
        }
    }
}

echo $res

echo ''

foreach ($key in $res.Keys)
{
    echo $res[$key]
    echo ''
}

运行后得到的结果

Name                           Value                                                                                                                                                                        
----                           -----                                                                                                                                                                        
ST1000DM010-2EP102             {Capacity , Size, SMART, Model...}                                                                                                                                           
FORESEE P900F128GB             {Capacity , Size, Model, PNPDeviceID}                                                                                                                                        

Capacity                       931.51G                                                                                                                                                                      
Size                           1,000G                                                                                                                                                                       
SMART                          10,0,1,15,0,67,63,155,52,86,0,0,0,0,3,3,0,97,96,0,0,0,0,0,0,0,4,50,0,100,100,35,0,0,0,0,0,0,5,51,0,100,100,0,0,0,0,0,0,0,7,15,0,76,60,152,24,129,2,0,0,0,9,50,0,92,92,7,30...
Model                          ST1000DM010-2EP102                                                                                                                                                           
PNPDeviceID                    SCSI\DISK&VEN_ST1000DM&PROD_010-2EP102\4&2CA40C3&0&000200                                                                                                                    

Capacity                       119.24G                                                                                                                                                                      
Size                           128G                                                                                                                                                                         
Model                          FORESEE P900F128GB                                                                                                                                                           
PNPDeviceID                    SCSI\DISK&VEN_NVME&PROD_FORESEE_P900F128\5&6B06F81&0&000000 

相关文章

网友评论

      本文标题:Powershell获取硬盘信息及对应的S.M.A.R.T.数据

      本文链接:https://www.haomeiwen.com/subject/bivrlctx.html