2008年03月16日

icon WSH:HDDの温度を表示する(S.M.A.R.T.)

HDDの自己診断機能『S.M.A.R.T.』(Self-Monitoring Analysis and Reporting Technology)をWMI経由でWSHで触ってみる。

S.M.A.R.T.のフリーソフトは色々あるみたい。ちゃんと使うならそっちでお願いします。お勧めは、HDD Health

とりあえず、HDD温度HDD Healthのみパパッと表示させる必要があったので、それがこれ。

やってみるなら、メモ帳などに貼り付け、smart.vbsなどで保存して、ダブルクリックすれば動きます。


'[smart.vbs]
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")
Set colItems = objWMIService.ExecQuery("SELECT * FROM MSStorageDriver_FailurePredictData",,48)
For Each objItem in colItems
strMsg = strMsg & "-----------------------------------" & vbCRLF
strMsg = strMsg & "DeviceName: " & mid(objItem.InstanceName,1,22) & vbCRLF
For i = 2 To UBound(objItem.VendorSpecific) Step 12
If objItem.VendorSpecific(i) = 1 Then ' == Raw Read Error Rate
HDDHealth = objItem.VendorSpecific(i+3)
ElseIf objItem.VendorSpecific(i) = 194 Then ' == temprature
Temperature = objItem.VendorSpecific(i+5)
End If
Next
strMsg = strMsg & "HDD Health : " & HDDHealth & " %" & vbCRLF
strMsg = strMsg & "Temperature: " & Temperature & " ℃" & vbCRLF
Next
strMsg = strMsg & "-----------------------------------" & vbCRLF
msgBox strMsg, vbInformation, WScript.ScriptName


smart.gif
うちの結果がこれ。表示がカスタマイズされているけど、一応WindowsXP。
3個のHDDが付いてる。健康が100%じゃないな。。。
それに、SCSIってなってるけど、SATAなんですけど(笑)

どうもS.M.A.R.T.のデータってHDDベンダによってかなり方言があるみたい。
リリースされているソフトは、その辺りをベンダごとに対応してるみたいね。
だからもしかしたらうまく取得できないHDDもあるかも。
もちろん、S.M.A.R.T.非対応じゃ無理。

MSの『WMI Code Creator v1.0』を使えば、
NameSpace:root\WMI
Classes:MSStorageDriver_FailurePredictData
でS.M.A.R.T.の値をベタで触れるから、必要があるならやってみるとよろし。
上のコードも、ベースはCode Creatorで必要な部分を抜いたもの。
posted by tess at 07:30 | Comment(0) | TrackBack(0) | ソフトウェア
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/12494888

この記事へのトラックバック