【VBScript】疎通確認に最適!pingの実行と結果の確認用スクリプト


この記事はプロモーションを含みます。

VBScript

ホーム > VBScript 逆引きリファレンス

VBScriptで、pingコマンドの実行と、その実行結果を取得するスクリプトをご紹介します。

はじめに

今回は、VBScriptでpingコマンドを実行し、その実行結果を取得するスクリプトをご紹介しつつ、実装内容について簡単に説明したいと思います。
実装する方法は色々あるため、何パターンか紹介していますので、ご自身の環境に合ったものや使いやすいものを使用して頂ければと思います。

WMIを使ってpingを実行する

ここでは、WMI(Windows Management Instrumentation)を使用して、pingコマンドを実行するスクリプトをご紹介します。

使用方法

使用方法は簡単で、ソースコード内にある下記の定数に接続先のホスト名(または、IPアドレス)を記述して、実行するだけです。

定数名:TARGET_HOST

記述例:Const TARGET_HOST = "8.8.8.8"

実行時、接続に成功した場合は「pingが成功しました。」と表示され、
接続に失敗した場合は「pingが失敗しました。」と表示されます。

ソースコード①

WMIを使用してpingを実行する場合のソースコードになります。

Option Explicit

' 接続先ホスト(IPアドレス)
Const TARGET_HOST = "8.8.8.8"

' WMIサービスオブジェクト
Dim objWMIService
' Win32_PingStatusクラス
Dim objPing
' ping情報
Dim ping
' ping結果
Dim result

' ping実行
Set objWMIService = GetObject("winmgmts:\\.")
Set objPing = objWMIService.ExecQuery("Select * From Win32_PingStatus Where Address = '" & TARGET_HOST & "'")

' ping情報の取得
For Each ping In objPing

	' ping結果の確認
	Select Case ping.StatusCode
	Case 0
		result = True
	Case 11010
		result = False
	End Select

Next

' ping結果の表示
If(result)Then
  MsgBox "pingが成功しました。"
Else
  MsgBox "pingが失敗しました。"
End If

' 各種オブジェクトの破棄
Set ping = Nothing
Set objPing = Nothing
Set objWMIService = Nothing

WMIを使用して実行したpingコマンドの戻り値ですが、
「0」が成功、「11010」は、タイムアウト、それ以外がエラーとして扱われるようです。

ソースコード②

こちらも、WMIを使用してpingを実行する場合のソースコードになります。
①との違いは、WMIオブジェクトの作成方法です。

Option Explicit

' 接続先ホスト(IPアドレス)
Const TARGET_HOST = "8.8.8.8"

' WMIサービスオブジェクト
Dim objSWbemLocator
Dim objSWbemServices
' Win32_PingStatusクラス
Dim objPing
' ping情報
Dim ping
' ping結果
Dim result

' ping実行
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Set objSWbemServices = objSWbemLocator.ConnectServer()
Set objPing = objSWbemServices.ExecQuery("Select * From Win32_PingStatus Where Address = '" & TARGET_HOST & "'")

' ping情報の取得
For Each ping In objPing

	' ping結果の確認
	Select Case ping.StatusCode
	Case 0
		result = True
	Case 11010
		result = False
	End Select

Next

' ping結果の表示
If(result)Then
  MsgBox "pingが成功しました。"
Else
  MsgBox "pingが失敗しました。"
End If

' 各種オブジェクトの破棄
Set ping = Nothing
Set objPing = Nothing
Set objSWbemServices = Nothing
Set objSWbemLocator = Nothing

WSHを使ってpingを実行する

ここでは、WSH(Windows Script Host)を使用して、pingコマンドを実行するスクリプトをご紹介します。

使用方法

使用方法はWMIを使用する方法と同様に、ソースコード内にある下記の定数に接続先のホスト名(または、IPアドレス)を記述して、実行するだけです。

定数名:TARGET_HOST

記述例:Const TARGET_HOST = "8.8.8.8"

実行時、接続に成功した場合は「pingが成功しました。」と表示され、
接続に失敗した場合は「pingが失敗しました。」と表示されます。

ソースコード

WSHを使用してpingを実行する場合のソースコードになります。

Option Explicit

' 接続先ホスト(IPアドレス)
Const TARGET_HOST = "8.8.8.8"

' ping結果
Dim result
result = 0

' WSHオブジェクトの作成
Dim objShell
Set objShell = CreateObject("WScript.Shell")

' Windowsコマンドの実行
result = objShell.Run("cmd /c ping -n 1 " & TARGET_HOST, 0, True)

' ping結果の表示
If(result = 0)Then
  MsgBox "pingが成功しました。"
Else
  MsgBox "pingが失敗しました。"
End If

' WSHオブジェクトの破棄
Set objShell = Nothing

こちらで使用している、WSHについては下記で詳しく解説しているので、そちらを参考にして下さい。

コメント

タイトルとURLをコピーしました