Windows 7デバイスでは、次のWMIクエリは、有効なPPPアダプターを報告しません:
Select Index,MACAddress,IPAddress,IPSubnet,DefaultIPGateway,DNSServerSearchOrder from Win32_NetworkAdapterConfiguration where IPEnabled=true
ipconfigは、すべての情報を正しく提供します。
WindowsIP構成
PPPアダプターXYZVPN:
接続固有のDNSサフィックス。 :IPv4アドレス。 。 。 。 。 。 。 。 。 。 。 :123.456.789.123
サブネットマスク 。 。 。 。 。 。 。 。 。 。 。 :255.255.255.255
デフォルトゲートウェイ 。 。 。 。 。 。 。 。 。 :0.0.0.0無線LANアダプター無線ネットワーク接続:
接続固有のDNSサフィックス。 :IPv4アドレス。 。 。 。 。 。 。 。 。 。 。 :192.168.178.11
サブネットマスク 。 。 。 。 。 。 。 。 。 。 。 :255.255.255.0
デフォルトゲートウェイ 。 。 。 。 。 。 。 。 。 :192.168.178.1イーサネットアダプタローカルエリア接続3:
メディアの状態。 。 。 。 。 。 。 。 。 。 。 :メディアが切断されました
接続固有のDNSサフィックス。 :
WMIまたはVBSを使用してこれをスクリプト化する方法はありますか?
これは バグ であり、Vistaに存在し、Windows7またはWindows8では修正されていません。
この情報を取得するには、.NETまたはC++ APIのいずれかを使用する必要があります。最も簡単な方法は、.NETでPowershellを使用することだと思います。
$nics = [System.Net.NetworkInformation.NetworkInterface]::GetAllNetworkInterfaces()
foreach ($nic in $nics) {
write-Host $nic.name
write-Host "MAC Address $($nic.GetPhysicalAddress)"
$props = $nic.GetIPProperties()
$addresses = $props.UnicastAddresses
foreach ($addr in $addresses) {
write-Host "IP Address: $($addr.Address.IPAddressToString)"
write-Host "IPv4 Mask: $($addr.IPv4Mask.IPAddressToString)"
}
write-Host "Gateway: $($props.GatewayAddresses.Address.IPAddressToString)"
write-Host "DNS Server(s): $($props.DnsAddresses.IPAddressToString)"
write-Host ""
}
C#、VB、またはC++でその.NETクラスを使用する方法については、 NetworkInterfaceクラスのドキュメント を参照してください。
On Error Resume Next
strComputer= "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each objItem In colItems
strIPAddress = Join(objItem.IPAddress, ",")
WScript.Echo "IPAddress: " & strIPAddress
Next