Как в PowerShell установить IP, маску сети, шлюз по умолчанию и DNS для сетевого интерфейса


Внимание: все настройки в данной статье нужно делать с правами администратора.

Связанная статья: Как запустить PowerShell с правами администратора

Установка статичного IP, маски сети и шлюза для сетевого адаптера в PowerShell чуть запутанна, но возможна. Эта заметка покажет, как это сделать с помощью командлетов New-NetIPAddress и Set-NetIPAddress.

Старый способ настройки сетевых интерфейсов, это использование команды netsh. Вначале смотрим имя сетевых интерфейсов любой из следующих команд (они равнозначны):

netsh interface show interface
netsh int show int

Затем устанавливаем параметры для выбранного сетевого интерфейса (в следующих командах это интерфейс с именем «Wi-Fi»):

netsh interface ip set address "Wi-Fi" static <IP> <ПОДСЕТЬ> <ШЛЮЗ>
netsh interface ip set dns "Wi-Fi" static <DNS СЕРВЕР>

Но команда netsh считается устаревшей и Microsoft предупреждает, что они могут удалить netsh, а использовать следует Powershell.

Для управления сетевым адаптером нам нужно знать его индекс, его можно получить командой:

Get-NetIPAddress

Командлет Get-NetIPAddress получает конфигурацию IP-адреса, такую как IPv4-адреса, IPv6-адреса и IP-интерфейсы, с которыми связаны адреса.

Вы можете использовать следующую команду для более удобного представления информации:


Get-NetIPAddress | Format-Table

Дополнительно вы можете выполнить сортировку по номеру индекса интерфейса:

Get-NetIPAddress | Sort-Object -Property InterfaceIndex | Format-Table


Затем с помощью командлета New-NetIPAddress можно установить статический IP адрес:

New-NetIPAddress -InterfaceIndex ИНДЕКС_ИНТЕРФЕЙСА -IPAddress IP_АДРЕС -PrefixLength МАСКА -DefaultGateway ШЛЮЗ

Например, команда для установки на сетевом адаптере с индексом 18 статичного IP адреса 192.168.1.71 с маской подсети /24 (255.255.255.0) и шлюзом по умолчанию 192.168.1.1:

New-NetIPAddress -InterfaceIndex 18 -IPAddress 192.168.1.71 -PrefixLength 24 -DefaultGateway 192.168.1.1

Эта команда нормально сработает если вы хотите перейти с динамического IP адреса на статический. Но если вы хотите поменять параметры сетевого интерфейса на котором уже установлен статический IP адрес, то вы получите следующую ошибку:

New-NetIPAddress: Instance DefaultGateway already exists

Чтобы обойти это, можно использовать Set-NetIPAddress, но этот командлет не принимает параметр -DefaultGateway, поэтому назначается новый адрес, но со старым шлюзом.

Например, следующая команда:

Set-NetIPAddress -InterfaceIndex 18 -IPAddress 192.168.1.71 -PrefixLength 24 -DefaultGateway 192.168.1.1

завершиться ошибкой

Set-NetIPAddress: A parameter cannot be found that matches parameter name 'DefaultGateway'.

Как удалить шлюз, чтобы начать с New-NetIPAddress, или заменить шлюз при использовании Set-NetIPAddress?

Нужно использовать следующий алгоритм действий.

Удаляем статичный IP адрес:

Remove-NetIPAddress -InterfaceIndex ИНДЕКС_ИНТЕРФЕЙСА

Удаляем дефолтный шлюз:

Remove-NetRoute -InterfaceIndex ИНДЕКС_ИНТЕРФЕЙСА

Добавляем новый IP адрес и шлюз:

New-NetIPAddress -InterfaceIndex ИНДЕКС_ИНТЕРФЕЙСА -AddressFamily IPv4 10.1.2.4 -PrefixLength 24 -Type Unicast -DefaultGateway 10.1.2.255

Для установки настроек DNS серверов на сетевом интерфейсе с указанным индексом, используйте команду вида:

Set-DnsClientServerAddress -InterfaceIndex ИНДЕКС_ИНТЕРФЕЙСА -ServerAddresses ("8.8.8.8","8.8.4.4")

Рекомендуется Вам:

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

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