В Windows вы можете управлять настройками сетевых адаптеров не только из графического интерфейса, но из командной строки PowerShell. В этой статье мы рассмотрим основные командлеты, которые позволяют узнать текущий адрес сетевого адаптера, назначить статический IP адрес, DNS сервера, или настроить сетевой интерфейс на получение конфигурации IP от DHCP сервера . Вы можете использовать эти командлеты для настройки сети как в Windows 10/11, так и в Windows Server (или версии Sever Core ), в Hyper-V Server , для изменения настроек IP сетевых адаптеров на удаленных компьютерах, и в PowerShell скриптах.
В предыдущих версиях в Windows для управления сетевыми настройками из cmd использовалась из CLI использовалась команда netsh . В PowerShell 3.0 и выше для управления сетевыми настройками Windows можно использовать встроенный PowerShell модуль NetTCPIP .
Чтобы получить список командлетов в этом модуле, выполните:
get-command -module NetTCPIP
Выведите список доступных сетевых интерфейсов в 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
Get-NetAdapter –IncludeHidden
Команда вернет в том числе все виртуальные WAN Miniport адаптеры, которые используются для различных типов подключений включая VPN. Перезапуск этих адаптеров часто позволяет решить некоторые ошибки VPN подключений с помощью встроенного клиента Windows. Для управления сетевыми подключениями VPN доступны отдельные команды PowerShell .
Вы можете обращаться к сетевым интерфейсам по их именам или индексам (столбец 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 адрес, 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_x000D_---- ----------- ----------- -------_x000D_Ethernet File and Printer Sharing for Microsoft Networks ms_server True_x000D_Ethernet NetBIOS Interface ms_netbios True_x000D_Ethernet Microsoft LLDP Protocol Driver ms_lldp True_x000D_Ethernet Microsoft NDIS Capture ms_ndiscap True_x000D_Ethernet Internet Protocol Version 4 (TCP/IPv4) ms_tcpip True_x000D_Ethernet Microsoft RDMA - NDK ms_rdma_ndk True_x000D_Ethernet Microsoft Network Adapter Multiplexor Protocol ms_implat False_x000D_Ethernet Link-Layer Topology Discovery Mapper I/O Driver ms_lltdio True_x000D_Ethernet NDIS Usermode I/O Protocol ms_ndisuio True_x000D_Ethernet Point to Point Protocol Over Ethernet ms_pppoe True_x000D_Ethernet Link-Layer Topology Discovery Responder ms_rspndr True_x000D_Ethernet Internet Protocol Version 6 (TCP/IPv6) ms_tcpip6 True_x000D_Ethernet Hyper-V Extensible Virtual Switch vms_pp False_x000D_Ethernet WFP Native MAC Layer LightWeight Filter ms_wfplwf_lower True_x000D_Ethernet Client for Microsoft Networks ms_msclient True_x000D_Ethernet Npcap Packet Driver (NPCAP) INSECURE_NPCAP True_x000D_Ethernet WINS Client(TCP/IP) Protocol ms_netbt True_x000D_Ethernet Bridge Driver ms_l2bridge True_x000D_Ethernet WFP 802.3 MAC Layer LightWeight Filter ms_wfplwf_upper True_x000D_Ethernet QoS Packet Scheduler ms_pacer True_x000D_
С помощью 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
Чтобы задать адреса первичного и вторичного 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
Get-DnsClientCache
Для просмотра таблицы маршрутизации используется командлет 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
Чтобы сетевой интерфейс компьютера получал динамический 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
}
Вы можете использовать PowerShell чтобы удаленно изменить настройки IP адреса или DNS серверов на нескольких удаленных компьютерах. Допустим, ваша задача – изменить настройки DNS для всех серверов в указанном Organization Unit (OU) в Active Directory . Для получения списка компьютеров в скрипте ниже примере используется командлет Get-ADComputer , а удаленное подключение к компьютерам выполняется через WinRM (командлет Invoke-Command ):
$Servers = Get-ADComputer -SearchBase ‘OU=Moscow,DC=remontka,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}
}
}
Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…
Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…
Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…
Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…
Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…
Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…