Как в 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")
Связанные статьи:
- Как в PowerShell настроить сетевой интерфейс на использование динамичного IP адреса (DHCP) (90.9%)
- Эквивалент IPConfig в PowerShell (60.3%)
- Как в PowerShell просмотреть открытые порты. Как узнать, какая программа прослушивает порт (55.7%)
- Как в PowerShell просмотреть открытые порты UDP (55.7%)
- Test-NetConnection: сканирование открытых/закрытых портов из PowerShell (52.6%)
- Снижение уровня контроллеров домена в Windows Server в PowerShell и графическом интерфейсе (RANDOM - 6.1%)