4

На устройстве Windows 7 следующий запрос WMI не сообщает о включенном адаптере PPP:

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

Где ipconfig дает вам всю информацию правильно:

Конфигурация Windows IP

PPP адаптер XYZ VPN:

DNS-суффикс для конкретного подключения. : IPv4-адрес. , , , , , , , , , , : 123.456.789.123
Маска подсети . , , , , , , , , , , : 255.255.255.255
Шлюз по умолчанию . , , , , , , , , : 0.0.0.0

Адаптер беспроводной локальной сети Беспроводное сетевое соединение:

DNS-суффикс для конкретного подключения. : IPv4-адрес. , , , , , , , , , , : 192.168.178.11
Маска подсети . , , , , , , , , , , : 255.255.255.0
Шлюз по умолчанию . , , , , , , , , : 192.168.178.1

Ethernet-адаптер Local Area Connection 3:

Медиа-государство. , , , , , , , , , , : СМИ отключены
DNS-суффикс для конкретного подключения. :

Любые идеи, как я могу написать это с помощью WMI или VBS?

2 ответа2

2

Это ошибка, которая присутствовала в Vista и не была исправлена в Windows 7 или Windows 8.

Вы должны использовать API .NET или C++ для получения этой информации. Я думаю, что проще всего использовать Powershell с .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 ""
}

См. Документацию класса NetworkInterface для получения информации об использовании этого класса .NET с C #, VB или C++.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .