Windows: получить номер интерфейса NIC

17

У меня следующая проблема: у меня есть сервер с довольно динамической конфигурацией сети, и мне нужно настроить на нем маршруты с параметром IF:

route add  ... mask ... ... if ?

Есть ли надежный способ, ручной и / или программный, получить этот номер интерфейса, если я знаю почти все остальное об этом адаптере?

AndreasT
источник

Ответы:

22

Вы можете увидеть эту информацию также при запуске route printкоманды. Это первое, что отображается. Индекс является первым столбцом

===========================================================================
Interface List
 13... ......Bluetooth Device (Personal Area Network)
 10... ......Intel(R) 82566MM Gigabit Network Connection
 11... ......Intel(R) Wireless WiFi Link 4965AG
 17... ......VMware Virtual Ethernet Adapter for VMnet1
 18. . ......VMware Virtual Ethernet Adapter for VMnet8
Rex
источник
14

Следующая команда отображает список интерфейсов:

netsh int ipv4 show interfaces

Администратор
источник
1
Это работает, но вы должны немного пояснить свой ответ, чтобы убедиться, что он не помечен.
TheCleaner
9

Поскольку вы знаете все остальное об адаптере и поскольку вы используете Server 2008, вы можете (и должны) просто добавить свои маршруты с помощью netsh, используя имя интерфейса:

netsh int ipv4 add route <remote netid>/<remote netmask> <interface name> <next hop>

Использование команды route обычно не рекомендуется в 2008+.

Феб
источник
Я бы не сказал, что он устарел ... просто сейчас рекомендуется использовать netsh. :) Кстати, ваша команда должна быть "netsh interface ipv4 add route"
Rex
Да, он двигался слишком быстро, команда отредактирована :) Хотя Microsoft редко использует термин «устарел», я полагаю, что их термин в основном был «Рекомендуется использовать netsh вместо маршрута» для продвижения вперед. Я лично видел некоторые проблемы с кластерами при использовании команды route, в которых проблемы маршрутизации возникают при отказе.
Феб
2
Обратите внимание, что имя adatper может отличаться от имени в, route printи использование неправильного имени приведет к появлению «полезного» сообщения об ошибке: «Неверный синтаксис имени файла, имени каталога или метки тома». используйте, netsh interface ipv4 show interfacesчтобы найти реальное имя.
ET-CS
3

Вы можете использовать PowerShell:

Get-WMIObject Win32_networkadapter | Select-Object Name, AdapterType, InterfaceIndex | Format-List
cuonglm
источник
Это возвращает числа, но они не совпадают с route printвыводом. Эти DeviceIDзначения также не совпадают. (И нет, это не просто вопрос «один на один».)
Джон Сигел,
Согласно блогу MS, routeкоманда возвращает приоритет адаптера. Эта команда возвращает InterfaceIndex. смотрите здесь: blogs.technet.microsoft.com/networking/2015/08/14/...
bobpaul