
Network interface index numbers are used to point network traffic in a specific direction.
Image Credit:
hxdbzxy/iStock/Getty Images
Modern computers often have multiple physical and software-based network adapters. People and machines alike can use system-assigned network interface index numbers to tell network elements apart. You can find all of your computer’s network interface index numbers using the «route» command in the command prompt. Network interface index numbers differ from Internet Protocol addresses in that they are used within a single device to direct traffic, while IP addresses regulate inter-device communication.
About Network Interface Index Numbers
According to Cisco, an interface index value is a unique identifying number for a physical or logical network device. Starting at the number one, the computer assigns an index number to each device to designate network traffic paths. Typical computer uses on small networks don’t need to worry about adjusting network traffic with the interface index numbers because the network hardware automatically configures traffic paths. However, larger scale networks that are concerned about performance speed can use the interface index numbers to control network data paths. If the computer initializes the network devices through a reboot it may reassign index numbers; computers need to keep interface index numbers persistent when using specified network paths.
List Device Network Interface Index Numbers
The command prompt has all the tools you need to identify interface index numbers and adjust network paths. You can launch a command prompt by pressing «Windows Key-R,» typing «cmd» and pressing «Enter.» Select the command prompt window, type the command «route print» and press «Enter» to display the «Interface List» and system routing tables. The interface index numbers appear under the Interface List in the left column and correspond to the physical or logical device listed in the right column. Alternatively, you can enter «route print 256.*» to display the Interface List with blank routing tables. The interface index has an integer value; however, older operating systems may display the value in hexadecimal instead of base-10 with a «0x» before the index number.
Get More Device Information
While the Interface List ties each index number to a device, the device names may not be particularly descriptive as to what they do. You can find more information on each of the devices by entering the command «ipconfig /all» into the command prompt. The ipconfig command does not display the index number; rather, it is used to display and adjust TCP/IP network values. The ipconfig command breaks out each device by the same name used in the Interface List and provides more information, including a device description, device activity status and the path the device is using to connect to the network.
Interface Index Numbers Are for Specificity
Network traffic will take any path available to get from the origin system to the destination system. The interface numbers are useful for specifying which path traffic takes between systems. For example, the command «route -p add 1.2.3.4 mask 255.255.0.0 5.6.7.8 if 0x1» instructs all traffic leaving through index device 1 going to the device at example IP address «1.2.3.4» to go to the device at «5.6.7.8» next on the way to the destination.
Перейти к содержанию
На чтение 2 мин Просмотров 556 Обновлено
Всем привет сегодня хочу рассказать, как посмотреть id интерфейса windows. Для чего это может потребоваться, примером может быть если вы хотите пустить определенный маршрут через определенный интерфейс, об этом я рассказывал в статье Как прописать статический маршрут в windows с помощью утилиты командной строки route, но не упомянул, где его можно посмотреть, давайте заполним пробел. Еще примером может быть создание виртуальных коммутаторов в гипервизоре Hyper-V, где нужно понять, какой сетевой интерфейс будет выступать в роли up-link.
Нам поможет все та же команда route print, вводим ее и видим поле Список интерфейсов и на против каждого есть свой ID.
Можно так же эту информацию получить и через PowerShell запрос, для этого выполните такую команду:
В случае с PowerShell на необходимо смотреть на столбец ifindex, он будет соответствовать номеру ID при выводе команду route print. Я выделил это на изображении.
Как получить информацию с ID сетевого интерфейса на удаленных компьютерах
Задача такая, есть список имен компьютеров или Ip-адреса в файле и необходимо вывести:
- ✅ Имя компьютера
- ✅ InterfaceIndex
- ✅ MacAddress
- ✅ InterfaceDescription
$computers = Get-Content -Path «C:\Temp\RDS\servers.txt»
foreach ($computer in $computers) {
$networkInterfaces = Invoke-Command -ComputerName $computer -ScriptBlock {
Get-NetAdapter | Select-Object Name, InterfaceIndex, MacAddress, InterfaceDescription
}
foreach ($interface in $networkInterfaces) {
Write-Output «Компьютер: $computer, Имя интерфейса: $($interface.Name), InterfaceIndex: $($interface.InterfaceIndex), MacAddress: $($interface.MacAddress), Описание интерфейса: $($interface.InterfaceDescription)»
}
}
На выходе вот такой результат, пре желании можно экспортировать в файл.
Вот так вот просто посмотреть id интерфейса windows. Материал сайта pyatilistnik.org
- Remove From My Forums
Как узнать номер сетевого интерфейса
-
Вопрос
-
Нужно построить таблицу маршрутизации, при помощи программы route. Но не могу указать номер интерфейса… У меня 2 активных сетевых соединения. Я уже пробовал методом перебора от 1 до 50 и всегда получаю сообщение об ошибке, что мол такого интерфейса нет. Как узнать номер сетевого интерфейса?
Ответы
-
Насколько я помню, route print печатает interface list среди прочего, где для каждого интерфейса указан номер.
Все ответы
-
Насколько я помню, route print печатает interface list среди прочего, где для каждого интерфейса указан номер.
-
Номер сетевого интерфейса не обязателен, будет выбран автоматически для указаннового вами шлюза.
ЗЫ.Согласен с предыдущим оратором.
-
Спасибо Дмитрий и Popus. Тема закрыта.
-
Георгий, а Вы еще кнопочку такую нажмите: «Было ли это сообщение информативным? — Да!»
-
Да вот не ту кнопочку нажать надо:) Надо нажать кнопочку Отметить как ответ
-
In command prompt:
netsh interface ipv4 show interface
-
Изменено
17 августа 2016 г. 14:12
-
Предложено в качестве ответа
old_boy
14 ноября 2016 г. 12:38
-
Изменено
-
Никак нет, не печатает Interface List в таблице маршрутов. Ответ не годится
-
Действительно, именно здесь ясно видно с родными названиями интерфейсов их номера
-
Уважаемый Марат, не нужно заниматься некропостингом. Если у вас есть вопрос который не получается решить поиском — создайте новое обсуждение
The opinion expressed by me is not an official position of Microsoft
I have the following problem: I have a server with a rather dynamic network configuration and need to configure routes on it with the IF parameter:
route add ... mask ... ... if ?
Is there a reliable way, manual and or programmatical, to get that interface number if I know just about everything else about that adaptor?
asked May 24, 2013 at 6:50
You can see that info also when you run the route print
command. It’s the first thing displayed. The index is the first column
=========================================================================== 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
answered May 24, 2013 at 18:21
RexRex
7,8953 gold badges28 silver badges45 bronze badges
1
The following command displays the list of interfaces:
netsh int ipv4 show interfaces
answered Jan 15, 2015 at 8:50
AdminAdmin
2012 silver badges2 bronze badges
3
Since you know everything else about the adaptor, and since you are using Server 2008, you can (and should) just add your routes with netsh using the interface name:
netsh int ipv4 add route <remote netid>/<remote netmask> <interface name> <next hop>
Use of the route command is generally deprecated in 2008+.
answered May 24, 2013 at 18:00
phoebusphoebus
8,3701 gold badge31 silver badges29 bronze badges
3
You can using PowerShell:
Get-WMIObject Win32_networkadapter | Select-Object Name, AdapterType, InterfaceIndex | Format-List
answered May 24, 2013 at 7:05
cuonglmcuonglm
2,3562 gold badges15 silver badges20 bronze badges
2
Оглавление:
- О индексных номерах сетевого интерфейса
- Список номеров устройств сетевого интерфейса
- Получить больше информации об устройстве
- Индексные номера интерфейса предназначены для специфичности
Видео: PHP Syntax (Февраль 2023)
Современные компьютеры часто имеют несколько физических и программных сетевых адаптеров. Люди и машины могут использовать назначенные системой индексы сетевого интерфейса для разделения элементов сети. Вы можете найти все номера индексов сетевого интерфейса вашего компьютера, используя команду «route» в командной строке. Индексные номера сетевого интерфейса отличаются от адресов интернет-протокола тем, что они используются в одном устройстве для направления трафика, а IP-адреса регулируют связь между устройствами.
Индексные номера сетевого интерфейса используются для направления сетевого трафика в определенном направлении. Кредит: hxdbzxy / iStock / Getty Images
О индексных номерах сетевого интерфейса
Согласно Cisco, значение индекса интерфейса представляет собой уникальный идентификационный номер для физического или логического сетевого устройства. Начиная с номера один, компьютер назначает индексный номер каждому устройству для обозначения путей сетевого трафика. Типичным компьютерам, использующимся в небольших сетях, не нужно беспокоиться о настройке сетевого трафика с помощью индексных номеров интерфейса, поскольку сетевое оборудование автоматически настраивает пути трафика. Однако в крупных сетях, которые обеспокоены скоростью работы, могут использоваться номера индексов интерфейса для управления сетевыми трактами данных. Если компьютер инициализирует сетевые устройства через перезагрузку, он может переназначить номера индекса; Компьютеры должны сохранять порядковые номера интерфейса постоянными при использовании указанных сетевых путей.
Список номеров устройств сетевого интерфейса
В командной строке есть все инструменты, необходимые для определения номеров интерфейсов и настройки сетевых путей. Вы можете запустить командную строку, нажав «Windows Key-R», набрав «cmd» и нажав «Enter». Выберите окно командной строки, введите команду «route print» и нажмите «Enter», чтобы отобразить «Список интерфейсов» и таблицы маршрутизации системы. Индексы интерфейса отображаются в списке интерфейсов в левом столбце и соответствуют физическому или логическому устройству, указанному в правом столбце. Кроме того, вы можете ввести «route print 256. *» для отображения списка интерфейсов с пустыми таблицами маршрутизации. Индекс интерфейса имеет целочисленное значение; однако более старые операционные системы могут отображать значение в шестнадцатеричном формате вместо base-10 с «0x» перед индексным номером.
Получить больше информации об устройстве
В то время как список интерфейсов связывает каждый индексный номер с устройством, имена устройств могут не быть особенно описательными в отношении того, что они делают. Вы можете найти дополнительную информацию о каждом из устройств, введя команду «ipconfig / all» в командной строке. Команда ipconfig не отображает номер индекса; скорее он используется для отображения и настройки сетевых значений TCP / IP. Команда ipconfig выделяет каждое устройство с тем же именем, которое используется в списке интерфейсов, и предоставляет дополнительную информацию, включая описание устройства, состояние активности устройства и путь, который устройство использует для подключения к сети.
Индексные номера интерфейса предназначены для специфичности
Сетевой трафик будет проходить через любой доступный путь от исходной системы к целевой. Номера интерфейсов полезны для указания того, какой трафик пути проходит между системами. Например, команда «route -p add 1.2.3.4 mask 255.255.0.0 5.6.7.8 if 0x1» дает указание всему трафику, проходящему через индексное устройство 1, идти на устройство с примером IP-адреса «1.2.3.4» для перехода на устройство по адресу «5.6.7.8» далее по пути к месту назначения.
I’m looking for a reverse command that displays the name of the
network adapter for a given IP address.
Based on everything I tried, this should work seems you say you need to get this information ONLY from the IP address which you already specify in your example.
INTERACTIVE PROMPT FOR IP ADDRESS TO GET NETWORK CONNECTION NAME
(Use WMIC
and some batch FOR
loop token
and delim
parsing to get the network connection name for a specified IP address.)
(The result value will echo to a command window and a message box window. It’s all batch script but dynamically builds some VBS script functions to simplify the process for anyone that needs.)
@ECHO ON
:SetTempFiles
SET tmpIPaddr=%tmp%~tmpipaddress.vbs
SET tmpNetConName1=%tmp%~tmpNetConName1.txt
SET tmpNetConName2=%tmp%~tmpNetConName2.txt
SET tmpBatFile=%tmp%~tmpBatch.cmd
SET tmpVBNetCon=%tmp%~tmpVBNetCon.vbs
IF EXIST "%tmpIPaddr%" DEL /F /Q "%tmpIPaddr%"
IF EXIST "%tmpNetConName1%" DEL /Q /F "%tmpNetConName1%"
IF EXIST "%tmpNetConName2%" DEL /Q /F "%tmpNetConName2%"
IF EXIST "%tmpBatFile%" DEL /Q /F "%tmpBatFile%"
IF EXIST "%tmpVBNetCon%" DEL /Q /F "%tmpVBNetCon%"
:InputBox
SET msgboxTitle=IP ADDRESS
SET msgboxLine1=Enter the IP address to get its Windows connection name
>"%tmpIPaddr%" ECHO wsh.echo inputbox("%msgboxLine1%","%msgboxTitle%")
FOR /F "tokens=*" %%N IN ('cscript //nologo "%tmpIPaddr%"') DO CALL :setvariables %%N
GOTO EOF
:setvariables
SET IPAddress=%~1
FOR /F "USEBACKQ TOKENS=3 DELIMS=," %%A IN (`"WMIC NICCONFIG GET IPADDRESS,MACADDRESS /FORMAT:CSV | FIND /I "%IPAddress%""`) DO (SET MACAddress=%%~A)
FOR /F "USEBACKQ TOKENS=3 DELIMS=," %%B IN (`"WMIC NIC GET MACADDRESS,NETCONNECTIONID /FORMAT:CSV | FIND /I "%MACAddress%""`) DO ECHO(%%~B>>"%tmpNetConName1%"
::: Parse Empty Lines
FINDSTR "." "%tmpNetConName1%">"%tmpNetConName2%"
::: Build Dynamic Batch with ECHO'd Network Connection Value
FOR /F "tokens=*" %%C IN (%tmpNetConName2%) DO ECHO ECHO %%~C>>"%tmpBatFile%"
IF NOT EXIST "%tmpBatFile%" GOTO :NullExit
START "" "%tmpBatFile%"
::: Build Dynamic VBS with Message Box Network Connection Value
FOR /F "tokens=*" %%C IN (%tmpNetConName2%) DO (SET vbNetconName=%%~C)
ECHO msgbox "%vbNetconName%",0,"%vbNetconName%">"%tmpVBNetCon%"
START /B "" "%tmpVBNetCon%"
EXIT /B
:NullExit
ECHO msgbox "Cannot find MAC Address, check to confirm IP Address was correct.",0,"Invalid IP">"%tmpVBNetCon%"
START /B "" "%tmpVBNetCon%"
EXIT /B
ALL ONE-LINERS
NATIVE WINDOWS ONLY WITH NETSH ALL INTERFACES (ALL IPv4 ADDRESSES)
NETSH INT IP SHOW CONFIG | FINDSTR /R "Configuration for interface.* Address.*[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*"
NATIVE WINDOWS ONLY WITH IPCONFIG ALL INTERFACES (ALL IPv4 ADDRESSES)
IPCONFIG | FINDSTR /R "Ethernet* Address.*[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*"
USING PCRE2GREP (per @SalvoF)
SINGLE IP ADDRESS SPECIFIED
netsh interface ipv4 show address | pcre2grep -B2 "192.168.2.4" | FIND /V "DHCP"
FIND ALL IP ADDRESSES
netsh interface ip show config | pcre2grep -B2 ^(?:[0-9]{1,3}.){3}[0-9]{1,3}$ | FIND /V "DHCP" | FIND /V "Gate" | FIND /V "Metric" | FIND /V "Subnet"
FIND ALL IP ADDRESSES (Cleaned Up Regex (per @SalvoF))
netsh interface ip show config | pcre2grep "^[A-Z]|IP.*([0-9]{1,3}(.|)){4}"
Please note that the pcre2grep
I tried is per @SalvoF [+1]
as he suggested but using the…. FIND /V
to remove the line above containing DHCP
seems to get the desired output as you described. I used NETSH
rather than IPCONFIG
as well.
I’m looking for a reverse command that displays the name of the
network adapter for a given IP address.
Based on everything I tried, this should work seems you say you need to get this information ONLY from the IP address which you already specify in your example.
INTERACTIVE PROMPT FOR IP ADDRESS TO GET NETWORK CONNECTION NAME
(Use WMIC
and some batch FOR
loop token
and delim
parsing to get the network connection name for a specified IP address.)
(The result value will echo to a command window and a message box window. It’s all batch script but dynamically builds some VBS script functions to simplify the process for anyone that needs.)
@ECHO ON
:SetTempFiles
SET tmpIPaddr=%tmp%~tmpipaddress.vbs
SET tmpNetConName1=%tmp%~tmpNetConName1.txt
SET tmpNetConName2=%tmp%~tmpNetConName2.txt
SET tmpBatFile=%tmp%~tmpBatch.cmd
SET tmpVBNetCon=%tmp%~tmpVBNetCon.vbs
IF EXIST "%tmpIPaddr%" DEL /F /Q "%tmpIPaddr%"
IF EXIST "%tmpNetConName1%" DEL /Q /F "%tmpNetConName1%"
IF EXIST "%tmpNetConName2%" DEL /Q /F "%tmpNetConName2%"
IF EXIST "%tmpBatFile%" DEL /Q /F "%tmpBatFile%"
IF EXIST "%tmpVBNetCon%" DEL /Q /F "%tmpVBNetCon%"
:InputBox
SET msgboxTitle=IP ADDRESS
SET msgboxLine1=Enter the IP address to get its Windows connection name
>"%tmpIPaddr%" ECHO wsh.echo inputbox("%msgboxLine1%","%msgboxTitle%")
FOR /F "tokens=*" %%N IN ('cscript //nologo "%tmpIPaddr%"') DO CALL :setvariables %%N
GOTO EOF
:setvariables
SET IPAddress=%~1
FOR /F "USEBACKQ TOKENS=3 DELIMS=," %%A IN (`"WMIC NICCONFIG GET IPADDRESS,MACADDRESS /FORMAT:CSV | FIND /I "%IPAddress%""`) DO (SET MACAddress=%%~A)
FOR /F "USEBACKQ TOKENS=3 DELIMS=," %%B IN (`"WMIC NIC GET MACADDRESS,NETCONNECTIONID /FORMAT:CSV | FIND /I "%MACAddress%""`) DO ECHO(%%~B>>"%tmpNetConName1%"
::: Parse Empty Lines
FINDSTR "." "%tmpNetConName1%">"%tmpNetConName2%"
::: Build Dynamic Batch with ECHO'd Network Connection Value
FOR /F "tokens=*" %%C IN (%tmpNetConName2%) DO ECHO ECHO %%~C>>"%tmpBatFile%"
IF NOT EXIST "%tmpBatFile%" GOTO :NullExit
START "" "%tmpBatFile%"
::: Build Dynamic VBS with Message Box Network Connection Value
FOR /F "tokens=*" %%C IN (%tmpNetConName2%) DO (SET vbNetconName=%%~C)
ECHO msgbox "%vbNetconName%",0,"%vbNetconName%">"%tmpVBNetCon%"
START /B "" "%tmpVBNetCon%"
EXIT /B
:NullExit
ECHO msgbox "Cannot find MAC Address, check to confirm IP Address was correct.",0,"Invalid IP">"%tmpVBNetCon%"
START /B "" "%tmpVBNetCon%"
EXIT /B
ALL ONE-LINERS
NATIVE WINDOWS ONLY WITH NETSH ALL INTERFACES (ALL IPv4 ADDRESSES)
NETSH INT IP SHOW CONFIG | FINDSTR /R "Configuration for interface.* Address.*[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*"
NATIVE WINDOWS ONLY WITH IPCONFIG ALL INTERFACES (ALL IPv4 ADDRESSES)
IPCONFIG | FINDSTR /R "Ethernet* Address.*[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*"
USING PCRE2GREP (per @SalvoF)
SINGLE IP ADDRESS SPECIFIED
netsh interface ipv4 show address | pcre2grep -B2 "192.168.2.4" | FIND /V "DHCP"
FIND ALL IP ADDRESSES
netsh interface ip show config | pcre2grep -B2 ^(?:[0-9]{1,3}.){3}[0-9]{1,3}$ | FIND /V "DHCP" | FIND /V "Gate" | FIND /V "Metric" | FIND /V "Subnet"
FIND ALL IP ADDRESSES (Cleaned Up Regex (per @SalvoF))
netsh interface ip show config | pcre2grep "^[A-Z]|IP.*([0-9]{1,3}(.|)){4}"
Please note that the pcre2grep
I tried is per @SalvoF [+1]
as he suggested but using the…. FIND /V
to remove the line above containing DHCP
seems to get the desired output as you described. I used NETSH
rather than IPCONFIG
as well.
Вот еще несколько интересных статей:
В Windows вы можете управлять настройками сетевых адаптеров не только из графического интерфейса, но из командной строки PowerShell. В этой статье мы рассмотрим основные командлеты, которые позволяют узнать текущий адрес сетевого адаптера, назначить статический IP адрес, DNS сервера, или настроить сетевой интерфейс на получение конфигурации IP от DHCP сервера. Вы можете использовать эти командлеты для настройки сети как в Windows 10/11, так и в Windows Server (или версии Sever Core), в Hyper-V Server, для изменения настроек IP сетевых адаптеров на удаленных компьютерах, и в PowerShell скриптах.
Содержание:
- Управление сетевыми адаптерами в Windows из PowerShell
- Вывести настройки IP сетевого подключения с PowerShell
- PowerShell: задать статический IP адрес в Windows
- Set-DnsClientServerAddress: настроить адреса DNS серверов
- Управление таблицей маршрутизации с помощью PowerShell
- PowerShell: получить IP адрес в Windows от DHCP сервера
- Изменить параметры IP и DNS на удаленном компьютере Windows
В предыдущих версиях в Windows для управления сетевыми настройками из cmd использовалась из CLI использовалась команда netsh. В PowerShell 3.0 и выше для управления сетевыми настройками Windows можно использовать встроенный PowerShell модуль NetTCPIP.
Чтобы получить список командлетов в этом модуле, выполните:
get-command -module NetTCPIP
В этот модуль также входит командлет Test-NetConnection, который можно использовать для проверки доступности TCP портов на удаленных компьютерах.
Управление сетевыми адаптерами в Windows из PowerShell
Выведите список доступных сетевых интерфейсов в Windows:
Get-NetAdapter
Командлет возвращает имя интерфейса, состояние (Up/Down), MAC адрес, скорость на порту.
В этом примере у меня на компьютере несколько сетевых адаптеров (кроме физического подключения Ethernet и WiFi есть несколько сетевых интерфейсов от Hyper-V и VMWare Player).
Чтобы вывести только активные физические сетевые интерфейсы:
Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}
Можно вывести только определенные параметры сетевых адаптеров, например: имя, скорость, состояние и MAC адрес:
Get-NetAdapter |Select-Object name,LinkSpeed,InterfaceOperationalStatus,MacAddress
Вы можете обращаться к сетевым интерфейсам по их именам или индексам (столбец ifIndex). В нашем примере, чтобы выбрать физический LAN адаптер Intel 82574L нужно набрать команду:
Get-NetAdapter -Name Ethernet0
или
Get-NetAdapter -InterfaceIndex 8
Можно изменить имя адаптера:
Rename-NetAdapter -Name Ethernet0 -NewName LAN
Чтобы выключить сетевой интерфейс, используйте команды:
Get-NetAdapter -InterfaceIndex 13| Disable-NetAdapter
При включении интерфейса нельзя указать его индекс, т.к. он не присвоен. Включите адаптер по его имени:
Enable-NetAdapter -InterfaceDescription “Hyper-V Virtual Ethernet Adapter"
Если для сетевого адаптера настроен номер VLAN, можно вывести его так:
Get-NetAdapter | ft Name, Status, Linkspeed, VlanID
Получить информацию об драйвере сетевого адаптера:
Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName
Информация о физических параметров подключения сетевых адаптерах (PCI слот, шина и т.д.).
Get-NetAdapterHardwareInfo
Вывести настройки IP сетевого подключения с PowerShell
Получить текущие настройки сетевого интерфейса (IP адрес, DNS, шлюз):
Get-NetIPConfiguration -InterfaceAlias Ethernet0
Чтобы вывести более подробную информацию о конфигурации сетевого интерфейса, используйте команду:
Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed
В этом случае выводится назначенный профиль сети интерфейса (NetProfile.NetworkCategory), настройки MTU (NetIPv4Interface.NlMTU), включено ли получение адреса от DHCP (NetIPv4Interface.DHCP) и ряд другой полезной информации.
Вывести все IPv4 адреса интерфейсов Windows:
Get-NetIPAddress -AddressFamily ipv4|ft
Получить значение только IP адрес интерфейса:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address
Получить текущие настройки стека TCP на компьютере можно с помощью команды:
Get-NetTCPSetting
Многие администраторы замечают, в Windows Server 2019 с ролью Hyper-V скорость копирования файлов на ВМ очень низкая. В этом случае решить проблемы помогает возврат параметров стека TCP, к настройкам которые использовались в Windows Server 2016:
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled
Вывести список сетевых протоколов, которые можно включить/отключить для сетевого адаптера:
Get-NetAdapterBinding -Name ethernet -IncludeHidden -AllBindings
Name DisplayName ComponentID Enabled ---- ----------- ----------- ------- Ethernet File and Printer Sharing for Microsoft Networks ms_server True Ethernet NetBIOS Interface ms_netbios True Ethernet Microsoft LLDP Protocol Driver ms_lldp True Ethernet Microsoft NDIS Capture ms_ndiscap True Ethernet Internet Protocol Version 4 (TCP/IPv4) ms_tcpip True Ethernet Microsoft RDMA - NDK ms_rdma_ndk True Ethernet Microsoft Network Adapter Multiplexor Protocol ms_implat False Ethernet Link-Layer Topology Discovery Mapper I/O Driver ms_lltdio True Ethernet NDIS Usermode I/O Protocol ms_ndisuio True Ethernet Point to Point Protocol Over Ethernet ms_pppoe True Ethernet Link-Layer Topology Discovery Responder ms_rspndr True Ethernet Internet Protocol Version 6 (TCP/IPv6) ms_tcpip6 True Ethernet Hyper-V Extensible Virtual Switch vms_pp False Ethernet WFP Native MAC Layer LightWeight Filter ms_wfplwf_lower True Ethernet Client for Microsoft Networks ms_msclient True Ethernet Npcap Packet Driver (NPCAP) INSECURE_NPCAP True Ethernet WINS Client(TCP/IP) Protocol ms_netbt True Ethernet Bridge Driver ms_l2bridge True Ethernet WFP 802.3 MAC Layer LightWeight Filter ms_wfplwf_upper True Ethernet QoS Packet Scheduler ms_pacer True
PowerShell: задать статический IP адрес в Windows
С помощью PowerShell вы можете задать статический IP адрес для сетевого интерфейса. Чтобы изменить IP адрес, маску подсети и шлюз для сетевого интерфейса, выполните:
Get-NetAdapter -Name Ethernet0| New-NetIPAddress –IPAddress 192.168.1.80 -DefaultGateway 192.168.1.1 -PrefixLength 24
Можно задать IP адрес, представив его в виде массива (более наглядно):
$ipParams = @{
InterfaceIndex = 8
IPAddress = "192.168.1.22"
PrefixLength = 24
AddressFamily = "IPv4"
}
New-NetIPAddress @ipParams
Если статический IP адрес уже настроен и нужно изменить его, используется командлет Set-NetIPAddress:
Set-NetIPAddress -InterfaceIndex 8 -IPAddress 192.168.1.90
Чтобы отключить получение IP адреса от DHCP для сетевого интерфейса, выполните:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled
Удалить статический IP адрес:
Remove-NetIPAddress -IPAddress "xxx.xxx.xxx.xxx"
Отключить протокол IPv6 для сетевого интерфейса:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled $false -ComponentID ms_tcpip6
Отключить протокол NetBIOS для интерфейса:
Set-NetAdapterBinding -Name Ethernet0 -ComponentID ms_netbios -AllBindings -Enabled $True
Set-DnsClientServerAddress: настроить адреса DNS серверов
Чтобы задать адреса первичного и вторичного DNS серверов в Windows, используется командлет Set-DNSClientServerAddress. Например:
Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.1.11,10.1.1.11
Первый IP адрес адрес выставляется в качестве Preffered DNS, а второй в Alternate DNS.
Можно также задать DNS сервера через массив:
$dnsParams = @{
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8","8.8.4.4")
}
Set-DnsClientServerAddress @dnsParams
После изменения настроек DNS, можно очистить DNS кэш (эквивалент
ipconfig /flushdns
):
Clear-DnsClientCache
Вывести содержимое DNS кэша в Windows:
Get-DnsClientCache
Управление таблицей маршрутизации с помощью PowerShell
Для просмотра таблицы маршрутизации используется командлет Get-NetRoute.
Вывести маршрут по умолчанию для физического сетевого интерфейса в Windows:
Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}| Get-netroute| where DestinationPrefix -eq "0.0.0.0/0"
Чтобы добавить новый маршрут, используется New-NetRoute:
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.0.1" -InterfaceIndex 8
Эта команда добавит постоянный маршрут в таблицу маршрутизации (аналог route -p add). Если вы хотите добавить временный маршрут, добавьте опцию
-PolicyStore "ActiveStore"
. Такой маршрут будет удален после перезагрузки Windows.
Удалить маршрут из таблицы маршрутизации:
Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$False
PowerShell: получить IP адрес в Windows от DHCP сервера
Чтобы сетевой интерфейс компьютера получал динамический IP адрес от DHCP сервера, выполните команду:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled
Очистите настройки DNS серверов:
Set-DnsClientServerAddress –InterfaceIndex 8 -ResetServerAddresses
И перезапустите интерфейс для получения IP адреса:
Restart-NetAdapter -InterfaceAlias Ethernet0
Если ранее у вас был настроен шлюз, удалите его:
Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false
Если нужно сбросить все настройки IPv4 для сетевых интерфейсов компьютера и переключить их на получение адреса от DHCP, используйте такой скрипт:
$IPType = "IPv4"
$adapter = Get-NetAdapter | ? {$_.Status -eq "up"}
$interface = $adapter | Get-NetIPInterface -AddressFamily $IPType
If ($interface.Dhcp -eq "Disabled") {
If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) {
$interface | Remove-NetRoute -Confirm:$false
}
$interface | Set-NetIPInterface -DHCP Enabled
$interface | Set-DnsClientServerAddress -ResetServerAddresses
}
Изменить параметры IP и DNS на удаленном компьютере Windows
Вы можете использовать PowerShell чтобы удаленно изменить настройки IP адреса или DNS серверов на нескольких удаленных компьютерах. Допустим, ваша задача – изменить настройки DNS для всех серверов в указанном Organization Unit (OU) в Active Directory. Для получения списка компьютеров в скрипте ниже примере используется командлет Get-ADComputer, а удаленное подключение к компьютерам выполняется через WinRM (командлет Invoke-Command):
$Servers = Get-ADComputer -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -Filter '(OperatingSystem -like "Windows Server*")' | Sort-Object Name
ForEach ($Server in $Servers) {
Write-Host "Server $($Server.Name)"
Invoke-Command -ComputerName $Server.Name -ScriptBlock {
$NewDnsServerSearchOrder = "192.168.1.11","8.8.4.4"
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "Old DNS settings: "
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
$Adapters | ForEach-Object {$_.SetDNSServerSearchOrder($NewDnsServerSearchOrder)} | Out-Null
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "New DNS settings: "
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
}
}
Чтобы управлять сетевыми адаптерами из командной строки Windows, необходимо знать их имена. Чтобы узнать название адаптера откройте командную строку windows, а затем выполните следующую команду:
netsh interface show interface
Данная команда выведет список всех доступных сетевых адаптеров в вашей системе.
Метки: netsh, Windows, Командная строка.