командная строка, чтобы определить, какой интерфейс Ethernet используется

У меня есть сценарий, который я написал, чтобы помочь настроить компьютеры после их развертывания. Сценарий выполняет такие действия, как установка имени компьютера, включение BitLocker и т. д. Единственное, с чем я борюсь, — это настройка IP-адреса. Компьютеры, которые я использую (точнее, серверы), имеют 4 порта NIC, и они называются «Подключение по локальной сети» и «Подключение по локальной сети 2-4». Проблема заключается в том, что технические специалисты, которые развертывают эти серверы, не всегда подключаются к одному и тому же порту, и, кроме того, образ развертывания не всегда назначает подключение локальной сети Ethernet к порту сетевой карты 1.

Вот копия имеющегося у меня сценария, который отлично работает, если включен только один порт сетевой карты. Что мне нужно сделать, так это направить вывод имени подключения по локальной сети с IP-адресом (поскольку DHCP уже существует) в переменную, которую я могу поместить в свою команду netsh.

Действующий код

:IPADDRESS
@echo Would you like static or DHCP?
@echo press 1 for static
@echo press 2 for dhcp
Choice /C:12 /N /M "?:"
IF ERRORLEVEL 2 GOTO IPDHCP
IF ERRORLEVEL 1 GOTO IPSTATIC

:IPSTATIC
set /P _IPADDR=Please enter IP address:
set /p _Subnet=Please enter Subnet:
set /p _DefaultGateway=Please Enter Default Gateway:

netsh interface ip set address name="Local Area Connection 2" static %_IPADDR% %_Subnet% %_DefaultGateway%
goto START

:IPDHCP
  netsh interface ip set address "Local Area Connection 2" dhcp
 goto START

 :disipaddr
  netsh interface ip show config name="Local Area Connection 2"

Название «Подключение по локальной сети 2» — это часть, которая меняется от сборки к сборке. Так что это та часть, которую мне нужно изолировать. Я совершенно уверен, что для /p и его использования против ipconfig /all или интерфейса netsh ip show config будет правильным путем.

Заранее благодарим вас за помощь.


person user1858210    schedule 28.11.2012    source источник


Ответы (3)


Это будет работать и проверено на Windows 7.

Пакетный файл .bat:

@echo off

for /f "tokens=2 delims==" %%F in ('wmic nic where "NetConnectionStatus=2 and AdapterTypeId=0" get  NetConnectionID /format:list') do set interfaceName=%%F

echo Your Interface is %interfaceName%

pause
person Benyamin Jafari    schedule 04.02.2015

Может быть, вы могли бы использовать wmic для этого? Что-то вроде:

for /f "tokens=2 delims==" %F in ('wmic nic where "NetConnectionStatus=2 and AdapterTypeId=0" get  NetConnectionID /format:list') do set %activeNet%=%F

Он должен вернуть все подключенные (NetConnectionStatus=2) интерфейсы Eth/802.3 (AdapterTypeID=0 ), т. е. тот, который подключен в вашем экземпляре. (по какой-то причине на моем ноутбуке с XP также сообщается о WiFi как 802.3, но это не должно быть проблемой для сервера)

Вы можете попробовать это прямо из командной строки, чтобы увидеть, возвращает ли он то, что должен. Замените %F на %%F, если используется в пакетном режиме.

Обратите внимание, что может потребоваться проверить значение, возвращаемое для подключенного интерфейса, так как оно отличается для разных ОС. Полное описание класса Win32_NetworkAdapter (для которого nic является псевдонимом)

Если вы на 100% уверены, что хотите проверить только те, которые начинаются с «Подключение по локальной сети», вы можете вместо этого использовать where "netconnectionID like 'Local Area Connection%'" (или комбинировать его с другими условиями)

person wmz    schedule 28.11.2012

Вы имеете в виду подключенные, которые используются?

:_InterfaceConnected_
FOR /F "tokens=3,*" %%A IN ('netsh interface show interface^|find "Connected"') DO (
echo %%B
echo connected : %%B
)
@echo:

:_InterfaceDisconnected_
FOR /F "tokens=3,*" %%A IN ('netsh interface show interface^|find "Disconnected"') DO (
echo %%B
echo disconnected : %%B
)

дает в качестве вывода:

Ethernet
connected : Ethernet

Ethernet 3
disconnected : Ethernet 3

Полный обзор через команду

> netsh interface show interface

выход :

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled        Disconnected   Dedicated        Ethernet 3
Enabled        Connected      Dedicated        Ethernet
person kris    schedule 11.07.2019