'______________________________________________
'
'<<IPアドレス情報の取得>>
' □機能
' IPCONFIGの標準出力からIPアドレスの値を取得する
' □リターン
' 正常終了 : 取得件数
' 異常終了 : -1
'______________________________________________
Option Explicit
'変数定義
Dim strIP 'IPCONFIGの結果が設定
Dim aryIP 'IPアドレスが設定
Dim IPcnt '取得件数
Dim idx 'インデックス
'IPCONFIGの結果(標準出力)を取得
If 0 <> Fnc_GetIP(strIP) Then
Wscript.Quit(-1)
End If
'IPアドレスを取得
Select Case Cnt_GetIPAdress(strIP, aryIP)
Case -1
Wscript.Quit(-1)
Case 0
Wscript.Quit(0)
Case Else
IPcnt = Ubound(aryIP)
Wscript.Echo "[Info]" & IPcnt & "件のIPAdressを取得しました"
For idx = 1 to IPcnt
Wscript.Echo "IP Adress : " & aryIP(idx)
Next
Wscript.Quit(IPcnt)
End Select
'□□□□□□□□□□□□□□□□□□□□
'IPCONFIG取得
'□□□□□□□□□□□□□□□□□□□□
'Ipconfigの標準出力を取得します
Private Function Fnc_GetIP(strIP)
On Error Resume Next
'<引数>
'StrIp : Out : Ipconfigの標準出力を設定
'<復帰値>
'正常終了 : 0
'異常終了 : -1
Dim objShell 'SHELLオブジェクト
Dim objExec 'EXECオブジェクト
Set objShell = CreateObject("Wscript.Shell")
'IPCONFIGコマンド発行
Set objExec = objShell.Exec("cmd.exe /c ipconfig")
Select Case Err.Number
Case 0
'標準出力を取得
With objExec.StdOut
Do Until .AtEndOfStream
strIP = strIP & .ReadLine & VbCrLf
Loop
End With
Fnc_GetIP = 0
Case Else
Wscript.Echo "[Info]ipconfigのコマンド実行でエラーが返されました"
Wscript.Echo Err.Description & "(" & Err.Number & ")"
Fnc_GetIP = -1
End Select
Set objShell = Nothing
Set objExec = Nothing
On Error Goto 0
End Function
'□□□□□□□□□□□□□□□□□□□□
'IPアドレス(XXX.XXX.XXX.XXX)取得
'□□□□□□□□□□□□□□□□□□□□
'検索するデータから「IP Address....: (IPアドレス)」を
'検索して「(IPアドレス)」を取得する
Private Function Cnt_GetIPAdress(strIP,aryIP)
On Error Resume Next
'<引数>
'strIp : IN : 検索データ
'aryIP : OUT : IPアドレス ※配列1より設定
'<復帰値>
'異常終了 : -1
'対象なし : 0
'対象あり : n(件数が設定)
Dim objRegExp 'RegExpオブジェクト用
Dim
objMatchs 'RegExpオブジェクト用
Dim cnt 'カウント
Dim idx 'インデックス
Set objRegExp = New RegExp
With objRegExp
'検索パターンを設定
.Pattern = "IP Address(?:[^:]+): ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$"
.Global = True
.IgnoreCase = True
.MultiLine = True
'検索開始&結果を設定
Set
objMatchs = .Execute(strIP)
Select Case Err.Number
Case 0
cnt =
objMatchs.Count
Redim AryIP(cnt)
For idx = 1 To cnt
AryIP(idx) =
objMatchs(idx-1).SubMatches(0)
Next
Cnt_GetIPAdress = cnt
Case Else
Wscript.Echo "[Info]Executeメソッドの実行でエラーが返されました"
Wscript.Echo Err.Description & "(" & Err.Number & ")"
Cnt_GetIPAdress = -1
End Select
End With
Set objRegExp = Nothing
Set
objMatchs = Nothing
On Error Goto 0
End Function