Настройка сетевых параметров в Windows с помощью PowerShell: IP-адрес, DNS, шлюз по умолчанию, статические маршруты

В Windows вы можете управлять настройками сетевых адаптеров не только из графического интерфейса, но и из командной строки PowerShell. В этой статье мы рассмотрим наиболее важные команды, с помощью которых можно узнать текущий IP-адрес сетевого адаптера, назначить статический IP-адрес, назначить IP-адрес DNS-сервера или настроить сетевой интерфейс на получение IP-конфигурации от DHCP-сервера. Эти команды можно использовать для настройки сети как в Windows 10/11, так и в Windows Server (или Server Core), Hyper-V Server, для изменения IP-адресов сетевых адаптеров на удаленных компьютерах, а также в сценариях автоматизации PowerShell.

Ранее для изменения DNS и IP-адресов на нескольких компьютерах с помощью PowerShell использовался netsh interface ipv4 команда использовалась для управления сетевыми настройками из CLI. В PowerShell 3.0 и более новых версиях можно использовать встроенную команду NetTCPIP Модуль PowerShell для управления сетевыми настройками в Windows.

Чтобы получить список команд этого модуля, выполните следующую команду:

get-command -module NetTCPIP

Управление сетевыми параметрами WIndows с помощью модуля PowerShell NetTCPIPУправление сетевыми параметрами WIndows с помощью модуля PowerShell NetTCPIP

Этот модуль также включает команду Test-NetConnection, которая может использоваться для поиска открытых TCP-портов на удаленных компьютерах.

Управление параметрами сетевого адаптера с помощью PowerShell

Список доступных сетевых интерфейсов на компьютере под управлением Windows:

Get-NetAdapter

Команда возвращает имя интерфейса, его состояние (Up/Down), MAC-адрес и скорость порта.

В этом примере на моем компьютере есть несколько сетевых адаптеров (помимо физического подключения, Ethernet0, у меня Hyper-V и VMWare Player сетевые интерфейсы).

Чтобы отобразить только включенные физические сетевые интерфейсы:

Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}

Get-NetAdapter - список подключенных сетевых адаптеровGet-NetAdapter - список подключенных сетевых адаптеров

Вы можете просмотреть только определенные параметры сетевого адаптера, такие как имя, скорость, статус или MAC-адрес:

Get-NetAdapter |Select-Object name,LinkSpeed,InterfaceOperationalStatus,MacAddress

список mac-адресов nic с помощью powershellсписок адресов nic mac с помощью powershell

В Windows может быть несколько скрытых сетевых адаптеров. Чтобы показать их все, добавьте команду IncludeHidden параметр:

Get-NetAdapter –IncludeHidden

В результате вы получите список всех виртуальных адаптеров WAN Miniport, которые используются для различных типов соединений, включая VPN. Перезагрузка этих адаптеров часто устраняет некоторые ошибки VPN-соединений со встроенным клиентом Windows. Для управления VPN-соединениями существуют отдельные команды PowerShell.

Вы можете ссылаться на сетевые интерфейсы по их именам или индексам (the Индекс столбец). В нашем примере для выбора физического адаптера локальной сети Гигабитное сетевое подключение Intel 82574L, используйте команду:

Get-NetAdapter -Name Ethernet0

или:

Get-NetAdapter -InterfaceIndex 8

powershell Get-NetAdapter выбрать сетевую карту по имениpowershell Get-NetAdapter выбрать сетевую карту по имени

Вы можете изменить имя адаптера:

Rename-NetAdapter -Name Ethernet0 -NewName LAN

Чтобы отключить сетевой интерфейс, используйте эту команду:

Get-NetAdapter -Name Ethernet0| Disable-NetAdapter

Включите сетевую карту по ее имени:

Enable-NetAdapter -Name Ethernet0

Использование PowerShell для отключения сетевого адаптера Использование PowerShell для отключения сетевого адаптера

Если сетевой адаптер имеет настроенный номер 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

Get-NetIPConfiguration - получение конфигурации IP-адреса в WIndows с помощью PowerShellGet-NetIPConfiguration - получение IP-конфигурации на WIndows с помощью PowerShell

Чтобы отобразить более подробную информацию о конфигурации TCP/IP сетевого интерфейса, используйте команду

Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed

В этом случае отображается назначенное сетевое расположение (профиль) (NetProfile.NetworkCategory) интерфейса, настройки MTU (NetIPv4Interface.NlMTU), включено ли получение IP-адреса по DHCP (NetIPv4Interface.DHCP) и другая полезная информация.

Get-NetIPConfiguration подробная информацияGet-NetIPConfiguration подробная информация

Чтобы получить только адрес интерфейса IPv4:

(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address

Возвращает только значение IP-адреса интерфейса:

(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address

При копировании файлов на виртуальные машины многие администраторы заметили низкую производительность сети на 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 ethernet0 -IncludeHidden -AllBindings

Get-NetAdapterBinding просмотр включенных сетевых протоколовGet-NetAdapterBinding просмотр включенных сетевых протоколов

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
Чтобы просмотреть активные сеансы TCP/IP на компьютере, используйте команду Get-NetTCPConnection.

Установка статического 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

Вы можете использовать New-NetIPAddress для добавления второго IP-адреса (псевдонима) к сетевому адаптеру.

Если статический 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

Отображение содержимого кэша DNS в Windows::
Get-DnsClientCache

Управление таблицами маршрутизации с помощью PowerShell

[Get-NetRoute Команда используется для отображения таблицы маршрутизации.

Получение маршрута шлюза по умолчанию для физического сетевого интерфейса в Windows:

Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}| Get-netroute| where DestinationPrefix -eq "0.0.0.0/0"

powershell: получить маршрут шлюза по умолчаниюpowershell: получить маршрут шлюза по умолчанию

Чтобы добавить новый маршрут, используйте команду 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}
}
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *