VBScriptでIP(IPv4)を取得するソース

あらすじ

VBScriptを使ってIPを取ってこないといけなくなりそうなので書いてみました。
動作はWindows 10 Homeでは確認済み。

ソースコード

' IP取得関数
' 引数: なし
' 戻り値: IP(オクテットごとに分けられたサイズ4の配列) の配列
Function getIpAddress()
   ' 戻り値用変数
    Dim ipAddressList

   ' 変数を動的配列にする
    Set ipAddressList = CreateObject("System.Collections.ArrayList")

   ' IPを調べたいホストの名前
    Const strComputer = "."

   ' WMIオブジェクトを取得
    Set wmiService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

   ' ネットワークアダプタの情報を取得
    Set colItems = wmiService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE")

   ' ネットワークアダプタの情報からIPを取り出し、戻り値の配列に追加
    For Each item in colItems
        For Each ipAddress in item.IPAddress
            arrOctets = Split(ipAddress, ".")
            
            If (UBound(arrOctets) + 1) = 4 Then
               ' IPがIPv4の場合のみ追加する(IPv6はしない)
                ipAddressList.add arrOctets
            End If
        Next
    Next

   ' 戻り値は静的配列にする
    getIpAddress = ipAddressList.ToArray()
End Function

ipAddressList = getIpAddress()

Wscript.Echo (UBound(ipAddressList) + 1)
For Each ipAddress in ipAddressList
    Wscript.Echo "IP: " & Join(ipAddress)
Next