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

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

このエントリーをはてなブックマークに追加
ATM 利用時の入出金手数料が最大 7 回/月無料、楽天銀行
WMI スクリプトの実行結果を VBS を利用してメールで送信する方法を公開しています
パソコンに負荷のかからないウィルス対策なら ESET パーソナル セキュリティ

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

Topics

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

Win32_PingStatus クラスの詳細に関しては、WMI Library 内の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 クラスだと思います。

WMI を使用できる VB, VBS, VBA いずれの環境でも Ping を打てるようになるのでかなり有益なクラスだと思います。

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

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

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

また WMI にて取得した内容をメールで通知したいこともあると思います。VBS で CDO オブジェクトを使用したメール送信を方法を紹介していますので、こちらも参考にしてみてください。


Latest sample information

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

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


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

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

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

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

∧ ページの先頭へ…