• ベストアンサー

VBSでSMARTの取得

「Win32_DiskDrive」クラスの「Capabilities」にある「SMART Notification 」の情報をVBSで取得するためのスクリプトについてご教示頂けませんでしょうか。

noname#242248
noname#242248

質問者が選んだベストアンサー

  • ベストアンサー
noname#251971
noname#251971
回答No.1

Win32_DiskDriveというのはWMIのクラスを指していますよね? WMIでS.M.A.R.T.の情報取れるんだ? と思って調べて見ましたが、Capabilities の SMART Notification というのは S.M.A.R.T. をサポートしているか否か、という情報なんですね。 試して見たところ、以下のような感じでデバイスが S.M.A.R.T. をサポートするか否かを調べられますね。 注意点として、このスクリプトを管理者権限で実行する必要があります。 普通の権限で実行しても、capability無しの結果になりますね。 あと、USB接続のドライブに対してはこのクラスでは情報取得出来ないぽいように見えます。 ---- Const Capability_SMART_Notification = 10 Set wbemService = GetObject("winmgmts:\\.\root\cimv2") Set diskDrives = wbemService.ExecQuery("SELECT * FROM Win32_DiskDrive") For Each disk In diskDrives If Not IsNull(disk.Capabilities) Then For Each capability In disk.Capabilities If (capability = Capability_SMART_Notification) Then WScript.Echo disk.Caption & " has SMART Notification capability." End If Next End If Next ----

noname#242248
質問者

お礼

ありがとうございます。 最近、VBSでWMIを使用する機会がないため、WMIの扱い方を忘れていました。 回答を頂きましたVBSをBATで読み出すようにして、BATを管理者権限で実行しました。 あるソフトウェアでリムーバブルドライブの接続確認を行うため、[Win32_DiskDrive]を使用しているらしく、その際にSMART情報も取得しているとのことで、S.M.A.R.T. サポートの有無なら取得する意味があるのかとどういう情報が取得できるか疑問に思い、ご教示を賜りたく今回  質問をさせていただきました。

関連するQ&A

  • VBSでhtmlのタイトルを取得したい

    VBSでhtmlファイルのタイトルを取得したいのですが、スクリプトが書けなくて悩んでおります。 要点は、htmlソースの<title></title>で囲まれたタイトルテキストで、htmlファイルを限定せずに取得できるスクリプトです。 VBSでは元から無理なのでしょうか。どなたかご教示ください。

  • prnport.vbsについて

    prnport.vbsについてご教示ください。 環境はWIN7です。 スクリプトでプリンタの「一時停止」と「再開」を行いたいと、かれこれ一週間試行錯誤しています。 コマンドプロンプトにて C:\>cscript.exe /nologo %WINDIR%\System32\Printing_Admin_Scripts\ja-JP\prnqctl.vbs -z -p "Brother DCP-J925N Printer" を入力すると希望どおり「一時停止」されるのですが 上記コマンドを入力したVBSファイルを作成し、ダブルクリックしても設定が反映されません。VBSファイルになにか記述において不足している情報などございますでしょうか? よろしくお願いいたします。

  • VBSでeventquery.vbs

    VBSにて、eventquery.vbsを使用したいと思ってます。 用件としては、 前日のEventLog取得 取得した情報を前日の日付.txtにて世代管理 をしたいと思っております。 実際の書式を教えてもらえればと思いますが 便利なサイトなどありましたら教えてもらえればと 思います。

  • VBSでOFFICEのバージョンを取得するには?

    PC情報を取得するVBSを作成しています。 作業手順はUSBにVBSを保存して、各PCにて実行する。 実行結果はVBSと同じフォルダにCSV形式(追加書き)で保存され10台で実行すると10行の一覧表が出来上がるという段取りです。 PC名、Windowsのバージョン、IEのバージョン、IPアドレスなど取得したい情報を取り出し、CSVに書き出し、まぁまぁ動くのですが、唯一OFFICEのバージョン(2007とか2010とか2013とか)を判別出来ず、判別不能で処理がVBSが終了してしまいます。 WINDOWS(7以降、XPもあるか?)でインストしているOFFICEのバージョンを取り出す方法を教えて下さい。あまり詳しくないのでコピペしてメモ帳でVBSとして保存すれば動く状態でご教授お願いします。

  • VBS「開いているページ」のURLを取得したい

    VBSで、「現在開いているIEのページ」のURLを取得する方法、 もしくはそれが載っているサイトなどはありませんでしょうか? http://www.happy2-island.com/vbs/cafe02/capter00706.shtml を参考にしながらやってみたのですが、 「現在開いているページ」の取得方法がどうしてもわからず… 使用方法としては、 (1)IEのツールバーにオリジナルのアイコンを作り、 (2)それがクリックされた際に表示されていたページのURLを、テキストファイルに保存。 というスクリプトを作りたいと思っています。 初心者で、ネットや本で調べ調べやっているのですが、 中々うまくいかず…。どうかご助力お願いいたします。

  • VBSについて

    VBSについての質問です WINDOWSからSolarisにFTP接続してファイルを取得するVBスクリプト。 ・ /export/home/backup/mysql/の下にあるファイルを取得 ・ /export/home/backup/www/の下にあるファイルを取得 ・取得したいファイル名をリスト化、そのリストを読み込んで、 1つのファイルをGET.→FTP切断→FTP接続→ファイルGET→FTP切断の繰り返し ・取得したファイルはSolarisから削除 ・日付を管理。最新のを5つだけ残す。一番ファイルを削除 こういったVBSはどうつくればいいんでしょうか?

  • VBSからbat実行(WMI)して戻り値を取得する

    WSH初心者です。 WSH(remote.vbs)からWMI使用で別サーバのA.batを実行しているのですが、 A.batの戻り値はどのように取得すれば良いのでしょうか? -■remote.vbs(一部抜粋)------------------------------------------ ' #WMI に接続 Wim32_Process クラスを取り出す Set clsProcess = GetObject("winmgmts:{impersonationLevel=impersonate}" & "!" & リモート先PC & "Win32_Process") ' #プロセスの作成 lngResult = clsProcess.Create(A.bat, null, null, processId) -------------------------------------------------------------- -■A.bat------------------------------------------ exit /B %RetCode% ------------------------------------------------- A.batで返している%RetCode%の値をremote.vbs側で取得したいのです。 どなたかご存じでしたらご教授の程よろしくお願い致します。

  • VBSを利用して、ファイル名を取得

    VBSを利用して、ファイル名を取得 はじめまして VBSを利用して、ファイルのフルパスを取得したいと思っております。 具体的には、フォルダ内のファイルを1ファイルずつ取得するようなプログラムを 作成したいと思っております。 C:\TEST \2010 \aaa.csv C:\TEST \2010 \bbb.csv C:\TEST \2009 \ccc.csv C:\TEST \2008 \ddd.csv C:\TEST \2008 \eee.csv フルパスを取得したいのですが、どのようにしたら良いでしょうか。 最終的には、上記の読み込んだファイルごとにファイルの中身を1行ずつ確認して、 特定の文字が含まれているか確認をするようなスクリプトにしようと思っております。 そのため、objFS.OpenTextFile("取得フルパス",ForReading)のようにして 取得したフルパスごとに読み込みをしようと思っております。 どなたか、お手数ではございますが、ご教授願います。

  • VBSでネットワークインターフェース名を取得したい。

    VBSでネットワークインターフェース名を取得したい。 こんにちわ!いつもお世話になっております。 さっそく質問なのですが、VBSを利用してネットワークインターフェース名を 取得する方法を教えてください。環境は、Windows7です。 Netshのコマンドを利用して、動的にDHCPまたはDGWの設定を変更したいと考えて おります。そのため、Netshのコマンドに必要なネットワークインターフェース名を 取得できないかと考えております。 下記のようなスクリプトを作成したのですが、下記のスクリプトでは文字数の変化に 対応ができないのと、余計な文字(:)を取得してしまいます。 検証用のWindows7で下記を実行すると、「ローカル エリア接続:」となりました。 ---------------------------------------------------------------------- If Err.Number = 0 Then Do Until objExec.StdOut.AtEndOfStream strLine = objExec.StdOut.ReadLine If InStr(strLine, "イーサネット アダプター") <> 0 Then iColon = Instr(strLine, ":") objEthernet = Mid(strLine, iColon - 11) End If Loop End If ---------------------------------------------------------------------- どんなネットワークインターフェース名でも、取得できるようにするにはどうしたら 良いでしょうか。 ご教授いただけると、大変助かります。よろしくお願い致します。

  • VBSについて教えてください。

    VBSについて教えてください。 イベントビューワのプロパティの変更(最大ログサイズとログサイズが最大値に達した時の操作)を以下のスクリプトにて変更したいと思っています。(スクリプトはhttp://www.microsoft.com/japan/technet/scriptcenter/scripts/logs/eventlog/lgevvb16.mspxで公開されているのを利用しています。) strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate,(Security)}!\\" & _ strComputer & "\root\cimv2") Set colLogFiles = objWMIService.ExecQuery _ ("Select * from Win32_NTEventLogFile") For each objLogfile in colLogFiles strLogFileName = objLogfile.Name Set wmiSWbemObject = GetObject _ ("winmgmts:{impersonationLevel=Impersonate}!\\.\root\cimv2:" _ & "Win32_NTEventlogFile.Name='" & strLogFileName & "'") wmiSWbemObject.MaxFileSize = 1024000 wmiSWbemObject.OverwriteOutdated = 0 wmiSWbemObject.Put_ Next WindowsXPSP2では動作したのですが、Windows2000SP4では以下のエラーが発生します。 Windows Script Host スクリプト:スクリプトの場所 行:14 文字:5 エラー:WBEM_FLAG_USE_AMENDED_QUALIFIERSが指定されていない場合は修正オブジェクトを置くことはできません コード:80041066 ソース:SWbemObject VBSについては全く理解できておりません。 Windows2000で動作させるためにんはどこを修正すればいいでしょうか?