WMI Fun !! 〜 WMIに興味がある方・システム管理者必見!! 〜
 WMI Step|WMI Sample|WMI Reference|WMI Library|My Let'snote|Personal|Link|About WMI Fun !!

WMI Fun !! > WMI Sample (VBS) > Pingを送信し応答結果を取得する

Panasonic Let'snoteを長年愛用しています、その理由はMy Let'snoteで…
インクを買うよりもしかしたら安い?インクジェット複合機HP Photosmart 5510
白いご飯や日本酒にもとても合うにしんのきりこみがマイブームです

Pingを送信し応答結果を取得する: Win32_PingStatus - WMI Sample (VBS)

Topics

WMI経由でPingを送信してその応答結果を取得するサンプルプログラムです。Win32_PingStatusクラスを使用します。

従来のVB(VB6)版のサンプルコードはこちらで公開しています。


Sample Code

Option Explicit

'WMIにて使用する各種オブジェクトを定義・生成する。
Dim oClassSet
Dim oClass
Dim oLocator
Dim oService

'ローカルコンピュータに接続する。
Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set oService = oLocator.ConnectServer
'クエリー条件をWQLにて指定する。
Set oClassSet = oService.ExecQuery("Select * From Win32_PingStatus Where Address = '192.168.0.1'")

'コレクションを解析する。
For Each oClass In oClassSet

Select Case oClass.StatusCode
Case 0
MsgBox "Success"
Case 11010
MsgBox "Request Timed Out"
Case Else
MsgBox "その他のエラー"
End Select

Next

'使用した各種オブジェクトを後片付けする。
Set oClassSet = Nothing
Set oClass = Nothing
Set oService = Nothing
Set oLocator = Nothing


Comment

実行すると指定したIPアドレスに対してPingを送信してその応答結果を表示します。「Success」と表示されれば成功です。「Request Timed Out」と表示されれば基本的にはPing失敗ということです。
StatusCodeプロパティを参照すればPingを打った結果の戻り値を取得できます。このStatusCodeプロパティを参照した戻り値の詳細は以下の通りです。

0 : Success
11001 : Buffer Too Small
11002 : Destination Net Unreachable
11003 : Destination Host Unreachable
11004 : Destination Protocol Unreachable
11005 : Destination Port Unreachable
11006 : No Resources
11007 : Bad Option
11008 : Hardware Error
11009 : Packet Too Big
11010 : Request Timed Out
11011 : Bad Request
11012 : Bad Route
11013 : TimeToLive Expired Transit
11014 : TimeToLive Expired Reassembly
11015 : Parameter Problem
11016 : Source Quench
11017 : Option Too Big
11018 : Bad Destination
11032 : Negotiating IPSEC
11050 : General Failure

エラーステータスとしてはコマンドプロンプトベースのPingコマンドと同じような感覚で細かく取れそうなので結構使えるかもしれません。
社内などでサーバーの生存確認目的でWin32_PingStatusクラスを使用して、Pingベースのサーバー管理用スクリプト/Keep aliveチェックスクリプトを作ってみたり、
すべてのルーターへ定期的にPingを実行しレスポンス状況からネットワーク監視ツールを作ってみるのも楽しいかもしれませんし、かなり便利に使えるWMIクラスだと思います。

ちなみにこのWin32_PingStatusクラスはWindows XP/Windows Server 2003以降の環境でなければ使用できません。ご注意下さい。

Win32_PingStatus クラスに関連するサンプルコードは他に、

を紹介しています。
なおWMIの使い方(VB6, VBS, VBA, VB.NET, VC#, PowerShellを対象)に関してはWMI Stepも参考にしてみてください。(WMI初心者・入門編としてもおすすめです。) 各種言語を使用したWMIを使用するたたき台としてソースコードテンプレートも公開しています。WMIプログラム/スクリプト作成時に役立てば…と思っています。


Recommended book

個人的にお勧めする本の紹介です。


Latest sample information

最近WMI Sampleへ追加したサンプルのご紹介です。

興味のあるサンプル・クラスがありましたら参考にしてみて下さい。


ご意見・ご要望・ご感想をこちらのアンケートからお待ちしています
WMIに関して調べているけど探し物が見つからない…という方はSearch Resultから検索してみましょう!!

MCP(Microsoft Certified Professional)一応MCP(Microsoft Certified Professional)、MCA(Microsoft Certified Associate)所有してたりします…

- WMI Fun !! -
http://www.wmifun.net/
Microsoft社のテクノロジーであるWMI(Windows Management Instrumentation)の使い方を
Visual Basicを使ってのんびり公開しています
WMIはVB/VBAや.Net(VB,C#)以外でもWMICやWSH(VBS,JS)・PowerShellなどスクリプト言語からも使えますよ!
Windowsベースの社内ITシステムに関する資産管理、アセットマネジメントや監視業務の効率化、 インベントリ情報収集系システムツール開発にWMIはお勧めです

This website is created by Toh.
Copyright(C) 1997-2012 WMI Fun !!. All rights reserved.
WMI Fun !!へのリンクはご自由に…相互リンクに関するお問い合わせはアンケートページからお願いします。

∧ ページの先頭へ…