
В Windows вы можете управлять настройками сетевых адаптеров не только из графического интерфейса, но и из командной строки PowerShell. В этой статье мы рассмотрим наиболее важные команды, с помощью которых можно узнать текущий IP-адрес сетевого адаптера, назначить статический IP-адрес, назначить IP-адрес DNS-сервера или настроить сетевой интерфейс на получение IP-конфигурации от DHCP-сервера. Эти команды можно использовать для настройки сети как в Windows 10/11, так и в Windows Server (или Server Core), Hyper-V Server, для изменения IP-адресов сетевых адаптеров на удаленных компьютерах, а также в сценариях автоматизации PowerShell.
- Управление параметрами сетевого адаптера с помощью PowerShell
- Как получить параметры IP-адреса с помощью PowerShell
- Установка статического IP-адреса в Windows с помощью PowerShell
- Установка IP-адресов DNS-серверов в Windows с помощью PowerShell
- Управление таблицами маршрутизации с помощью PowerShell
- PowerShell: Изменение адаптера со статического IP-адреса на DHCP
- Удаленное изменение DNS и IP-адресов на нескольких компьютерах с помощью PowerShell
Ранее для изменения DNS и IP-адресов на нескольких компьютерах с помощью PowerShell использовался netsh interface ipv4
команда использовалась для управления сетевыми настройками из CLI. В PowerShell 3.0 и более новых версиях можно использовать встроенную команду NetTCPIP Модуль PowerShell для управления сетевыми настройками в Windows.
Чтобы получить список команд этого модуля, выполните следующую команду:
get-command -module NetTCPIP
Управление параметрами сетевого адаптера с помощью PowerShell
Список доступных сетевых интерфейсов на компьютере под управлением Windows:
Get-NetAdapter
Команда возвращает имя интерфейса, его состояние (Up/Down), MAC-адрес и скорость порта.
В этом примере на моем компьютере есть несколько сетевых адаптеров (помимо физического подключения, Ethernet0, у меня 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.
Вы можете ссылаться на сетевые интерфейсы по их именам или индексам (the Индекс столбец). В нашем примере для выбора физического адаптера локальной сети Гигабитное сетевое подключение Intel 82574L, используйте команду:
Get-NetAdapter -Name Ethernet0
или:
Get-NetAdapter -InterfaceIndex 8
Вы можете изменить имя адаптера:
Rename-NetAdapter -Name Ethernet0 -NewName LAN
Чтобы отключить сетевой интерфейс, используйте эту команду:
Get-NetAdapter -Name Ethernet0| Disable-NetAdapter
Включите сетевую карту по ее имени:
Enable-NetAdapter -Name Ethernet0
Если сетевой адаптер имеет настроенный номер VLAN, вы можете просмотреть его:
Get-NetAdapter | ft Name, Status, Linkspeed, VlanID
Вот как можно узнать информацию об используемом драйвере сетевого адаптера:
Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName
Список информации о физических сетевых адаптерах (слот PCI, шина и т.д.):
Get-NetAdapterHardwareInfo
Отключить протокол IPv6 для сетевого интерфейса:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6
Отключить протокол NetBIOS для сетевого интерфейса:
Set-NetAdapterBinding -Name Ethernet0 -ComponentID ms_netbios -AllBindings -Enabled $True
Как получить параметры IP-адреса с помощью PowerShell
Чтобы получить текущие настройки сетевого адаптера в Windows (IP-адрес, DNS, шлюз по умолчанию):
Get-NetIPConfiguration -InterfaceAlias Ethernet0
Чтобы отобразить более подробную информацию о конфигурации TCP/IP сетевого интерфейса, используйте команду
Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed
В этом случае отображается назначенное сетевое расположение (профиль) (NetProfile.NetworkCategory) интерфейса, настройки MTU (NetIPv4Interface.NlMTU), включено ли получение IP-адреса по DHCP (NetIPv4Interface.DHCP) и другая полезная информация.
Чтобы получить только адрес интерфейса IPv4:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address
Возвращает только значение IP-адреса интерфейса:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled
Отображение списка сетевых протоколов, которые можно включить или отключить для сетевого адаптера:
Get-NetAdapterBinding -Name ethernet0 -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
Установка статического IP-адреса в Windows с помощью PowerShell
Давайте попробуем установить статический IP-адрес для сетевой карты. Чтобы изменить IP-адрес, сетевую маску и шлюз по умолчанию для сетевого интерфейса Ethernet0, используйте команду:
Get-NetAdapter -Name Ethernet0| New-NetIPAddress –IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24
IP-адрес можно задать с помощью структуры массива (более наглядно):
$ipParams = @{
InterfaceIndex = 8
IPAddress = "192.168.2.50"
PrefixLength = 24
AddressFamily = "IPv4"
}
New-NetIPAddress @ipParams
Если статический IP-адрес уже настроен и его необходимо изменить, используйте команду Set-NetIPAddress команда:
Set-NetIPAddress -InterfaceAlias Ethernet0 -IPAddress 192.168.2.90
Чтобы отключить получение IP-адреса от DHCP для вашего адаптера, выполните команду:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled
Удалить статический IP-адрес:
Remove-NetIPAddress -IPAddress "xxx.xxx.xxx.xxx"
Установка IP-адресов DNS-сервера в Windows с помощью PowerShell
Чтобы установить предпочтительный и альтернативный IP-адреса DNS-сервера в Windows, используйте команду Set-DNSClientServerAddress команда. Например:
Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.2.11,10.1.2.11
Можно также указать IP-адреса серверов имен DNS с помощью массива:
$dnsParams = @{
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8","8.8.4.4")
}
Set-DnsClientServerAddress @dnsParams
После изменения настроек DNS можно промыть кэш DNS-резольвера (эквивалентно ipconfig /flushdns
):
Clear-DnsClientCache
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.2.2" -InterfaceIndex 8
Эта команда добавляет постоянный маршрут в таблицу маршрутизации (аналогично route -p add
). Если вы хотите добавить временный маршрут, добавьте команду -PolicyStore "ActiveStore"
. Этот маршрут будет удален после перезапуска Windows.
Удаление маршрута из таблицы маршрутизации:
Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$False
PowerShell: Изменение адаптера со статического IP-адреса на DHCP
Чтобы настроить компьютер на получение динамического IP-адреса для сетевого адаптера от DHCP-сервера, выполните эту команду:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled
Очистите настройки DNS-сервера:
Set-DnsClientServerAddress –InterfaceAlias Ethernet0 -ResetServerAddresses
И перезапустите сетевой адаптер для автоматического получения IP-адреса от DHCP-сервера:
Restart-NetAdapter -InterfaceAlias Ethernet0
Если ранее был настроен шлюз по умолчанию, удалите его:
Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false
Если вам нужно сбросить все настройки IPv4 для сетевых интерфейсов компьютера и переключить их на получение динамического IP-адреса по протоколу 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
}
Удаленное изменение DNS и IP-адресов на нескольких компьютерах с помощью PowerShell
С помощью PowerShell можно удаленно изменить настройки IP-адреса или DNS-сервера на нескольких удаленных компьютерах.
Предположим, ваша задача – изменить настройки DNS на всех узлах Windows Server в определенной организационной единице AD (OU). Следующий сценарий использует команду Get-ADComputer для получения списка компьютеров из Active Directory, а затем подключается к удаленным компьютерам через WinRM (используется команда Invoke-Command):
$Servers = Get-ADComputer -SearchBase ‘OU=Servers,OU=Berlin,OU=DE,DC=woshub,DC=cpm’ -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.2.11","8.8.8.8"
$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}
}
}