WIN32_NetworkAdapterConfiguration não reporta IP do adaptador PPP

4

Em um dispositivo Windows 7, a seguinte consulta WMI não informa um adaptador PPP ativado:

Select Index,MACAddress,IPAddress,IPSubnet,DefaultIPGateway,DNSServerSearchOrder from Win32_NetworkAdapterConfiguration where IPEnabled=true

Onde ipconfig fornece todas as informações corretamente:

Windows IP Configuration

PPP adapter XYZ VPN:

Connection-specific DNS Suffix . : IPv4 Address. . . . . . . . . . . : 123.456.789.123
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 0.0.0.0

Wireless LAN adapter Wireless Network Connection:

Connection-specific DNS Suffix . : IPv4 Address. . . . . . . . . . . : 192.168.178.11
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.178.1

Ethernet adapter Local Area Connection 3:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :

Alguma idéia de como posso criar scripts usando o WMI ou o VBS?

    
por Michael 27.04.2011 / 17:42

2 respostas

2

Este é um bug que estava presente no Vista e não foi corrigido no Windows 7 ou no Windows 8.

Você deve usar as APIs .NET ou C ++ para obter essas informações. Acho que a coisa mais fácil de fazer é usar o Powershell com o .NET:

$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 ""
}

Veja a documentação da classe NetworkInterface informações sobre o uso dessa classe .NET com C #, VB ou C ++.

    
por 23.09.2013 / 18:52
0
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
    
por 17.05.2011 / 16:06