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

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

Вот копия скрипта, который у меня есть, который отлично работает, если включен только один порт NIC. Что мне нужно сделать, это направить вывод имени подключения по локальной сети с 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 был бы правильным путем.

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

2 ответа

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

Файл batch.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

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

:_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

Может быть, вы могли бы использовать 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) интерфейсы - то есть тот, который подключен в вашем случае. (по некоторым причинам он также сообщает о WiFi как 802.3 на моем ноутбуке XP, но это не должно быть проблемой для сервера)

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

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

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

Другие вопросы по тегам