С его помощью ipconfig
я могу показать список сетевых адаптеров и их настройки, например, IP-адрес.
Я ищу обратную команду, которая отображает имя сетевого адаптера для данного IP-адреса.
Я попытался отфильтровать вывод ipconfig
с помощью команды, как, ipconfig | find "192.168.2.4"
но затем имя адаптера пропало.
Мой вывод ipconfig
является (хитрая часть кажется, что у меня есть несколько адресов на одном адаптере здесь):
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::xxxx:xxxx:xxxx:xxxx%11
IPv4 Address. . . . . . . . . . . : 192.168.2.4
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.178.20
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.178.1
192.168.2.1
Ethernet adapter VMware Network Adapter VMnet1:
...
windows
networking
ip
batch-file
ip-address
Томас Веллер
источник
источник
Ответы:
Как отобразить имя сетевого адаптера для данного IP-адреса?
Это решение не требует каких-либо внешних команд (
pcre2grep
,sed
и т. Д.).Используйте следующий пакетный файл (getname.cmd):
Использование:
Пример:
Дальнейшее чтение
источник
goto
,for
,if
, функции, макросы ... Что еще нужно? ;)Вы можете использовать этот PS один вкладыш:
Чтобы использовать его прямо из командной строки:
или если вы хотите использовать его повторно, поместите его в скрипт и сделайте адрес параметром
Изменить: чтобы получить имя, как показано в Win / Ipconfig:
(присваивание промежуточным переменным только для того, чтобы сделать его немного более читабельным)
источник
$powershell
не определено, хотя, я запускаю эти командыpowershell -c
из командной строки. В командной строке PS также запускается 1-ая строка.powershell "$ip = '192.168.2.4';foreach($int in (gwmi Win32_NetworkAdapter)) {gwmi Win32_NetworkAdapterConfiguration -Filter """Index = $($int.index)""" | ? {$_.IPAddress -contains $ip} | % {$int.NetConnectionID} }"
GetRelated
чтоAssociators of
немного облегчает методы.Исходя из всего, что я пробовал, это должно работать, кажется, вы говорите, что вам нужно получить эту информацию ТОЛЬКО с IP-адреса, который вы уже указали в своем примере.
ИНТЕРАКТИВНАЯ ПОДСКАЗКА ДЛЯ IP-АДРЕСА, ЧТОБЫ ПОЛУЧИТЬ НАИМЕНОВАНИЕ СОЕДИНЕНИЯ СЕТИ
(Используйте
WMIC
и некоторый пакетныйFOR
циклtoken
иdelim
анализ, чтобы получить имя сетевого подключения для указанного IP-адреса.)(Значение результата будет отображаться в командном окне и окне сообщения. Это все пакетный сценарий, но динамически создает некоторые функции сценария VBS, чтобы упростить процесс для всех, кто в этом нуждается.)
ВСЕ ОДНО-ЛИНЕРЫ
РОДНЫЕ ОКНА ТОЛЬКО С NETSH ВСЕМИ ИНТЕРФЕЙСАМИ (ВСЕ АДРЕСА IPv4)
РОДНЫЕ ОКНА ТОЛЬКО С IPCONFIG ВСЕМИ ИНТЕРФЕЙСАМИ (ВСЕ АДРЕСА IPv4)
ИСПОЛЬЗОВАНИЕ PCRE2GREP (для @SalvoF)
УДЕЛЬНЫЙ IP-АДРЕС УКАЗАН
НАЙТИ ВСЕ IP-АДРЕСА
НАЙТИ ВСЕ IP-АДРЕСА (очищенное регулярное выражение (для @SalvoF))
Обратите внимание, что
pcre2grep
я пытался использовать @SalvoF,[+1]
как он предложил, но, используя ....FIND /V
для удаления строки, содержащей выше,DHCP
похоже, получит желаемый результат, как вы описали. Я использовал,NETSH
а неIPCONFIG
как хорошо.источник
netsh interface ip show config | pcre2grep "^[A-Z]|IP.*([0-9]{1,3}(\.|)){4}"
(Я немного почистил регулярное выражение). Я многому учусь вокруг этого места!Чтобы быть более точным, я воспользуюсь примером OP
sed
, который можно найти в\usr\local\wbin
папке этого заархивированного файла (проект UnxUtils).-n
подавляет несовпадающие строки; первый шаблон находит любую строку, начинающуюся с заглавной буквы, затемh
убирает ее на пробел; Второе совпадение - по требуемому IP-номеру: в этот момент вызывается имя интерфейса, содержащее строку (g
дополнительный), лишенный начальный текст (s
) и печатный (p
).источник
-B4
почти работает, он просто оставляет мне префикс «Ethernet-адаптер», который не относится к имени адаптера + 4 строки несвязанного вывода. Но сообщение ясно: найдите инструмент, который делает это :-)ipconfig
вывод? (Скрыть или изменить данные для конфиденциальности)sed
; возможно, ваше решение тоже может быть изменено для достижения этой цели.| sed -rn "s/^.* adapter (.*):/\1/p"
Для справки, вот еще одно пакетное решение, в котором используется отложенное расширение
%ERRORLEVEL%
системной переменной:Это может быть вызвано следующим образом:
find_int.cmd 192.168.1.100
источник
sed
однострочник, оставив имя интерфейса в качестве единственного вывода. Конечно, вы можете написать простой пакетный файл для этого, передавая IP нет. в качестве аргумента (%1
).Спасибо за усилия всем. Кажется, есть несколько препятствий:
-Bx
Кажется, что все и Regex легко ломаются, поэтому я нашел что-то, что мог бы реализовать сам, и придумал следующую программу на C #, которая принимает IP-адрес в качестве параметра (IP2Adapter <IP>
):источник
В Windows 10 Powershell это может быть достигнуто с помощью следующего:
Это даст такой результат, как
Wi-Fi
.Где Вы можете заменить
InterfaceAlias
любое другое свойство объекта.Для того, чтобы получить все свойства, просто опустить трубы и выполнить команду:
Get-NetIPAddress -IPAddress '192.168.2.4'
.Другие свойства, относящиеся к сетевому адаптеру (например, Description), обычно могут запрашиваться на основе
InterfaceAlias
илиInterfaceIndex
, например:Что даст что - то вроде:
Intel(R) Dual Band Wireless-AC 8265
.Подробнее читайте в документации: https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-netipaddress?view=win10-ps
источник