Работа с сетевыми интерфейсами в PowerShell

Работа с сетевыми интерфейсами в PowerShell

Разберём основные команды, которые пригодятся нам при настройке сети в ОС #Windows через #PowerShell.

Сетевые адаптеры

Получить список сетевых адаптеров и их интерфейсов:

1
Get-NetAdapter

Получить список обычных и скрытых сетевых адаптеров:

1
Get-NetAdapter IncludeHidden

Получить конфигурацию по интерфейсу 5:

1
Get-NetAdapter -InterfaceIndex 5 | Get-NetIPConfiguration

Получить детальную конфигурацию по интерфейсу 5:

1
Get-NetAdapter -InterfaceIndex 5 | Get-NetIPConfiguration -Detailed

Отключить адаптер с интерфейсом 5:

1
Get-NetAdapter -InterfaceIndex 5 | Disable-NetAdapter

Сетевые профили

Вывести информацию по текущим сетевым профилям:

1
Get-NetConnectionProfile

Получить информацию только по профилю сети интерфейса 5:

1
Get-NetAdapter -InterfaceIndex 5 | Get-NetConnectionProfile

Изменить профиль сети интерфейса 5 на публичный (Public).

1
Get-NetAdapter -InterfaceIndex 5 | Set-NetConnectionProfile -NetworkCategory 'Public'

Изменить профиль сети интерфейса 5 на приватный (Private).

1
Get-NetAdapter -InterfaceIndex 5 | Set-NetConnectionProfile -NetworkCategory 'Private'

Изменить профиль сети интерфейса 5 на доменный (DomainAuthenticated).

1
Get-NetAdapter -InterfaceIndex 5 | Set-NetConnectionProfile -NetworkCategory 'DomainAuthenticated'

Настройка IP-адреса

Отключить DHCP на интерфейсе 5:

1
Get-NetAdapter -InterfaceIndex 5 | Set-NetIPInterface -Dhcp 'Disabled'

Установить новый IP-адрес и шлюз на интерфейсе 5:

1
Get-NetAdapter -InterfaceIndex 5 | New-NetIPAddress IPAddress '192.168.0.10' -PrefixLength '24' -DefaultGateway '192.168.0.1'

Изменить IP-адрес на интерфейсе 5:

1
Get-NetAdapter -InterfaceIndex 5 | Set-NetIPAddress -IPAddress '192.168.0.12'

Удалить IP-адрес на интерфейсе 5:

1
Get-NetAdapter -InterfaceIndex 5 | Remove-NetIPAddress -Confirm:$false

Удаление шлюза на интерфейсе 5:

1
Get-NetAdapter -InterfaceIndex 5 | Remove-NetRoute -Confirm:$false

Настройка DNS

Установить IP-адреса серверов #DNS на интерфейсе 5:

1
Get-NetAdapter -InterfaceIndex 5 | Set-DNSClientServerAddress ServerAddresses ('192.168.0.2','192.168.1.2')

Сбросить IP-адреса серверов DNS на параметры по умолчанию на интерфейсе 5:

1
Get-NetAdapter -InterfaceIndex 5 | Set-DnsClientServerAddress -ResetServerAddresses

Очистить кэш #DNS:

1
Clear-DnsClientCache

Настройка DHCP

Включить #DHCP на интерфейсе 5:

1
Get-NetAdapter -InterfaceIndex 5 | Set-NetIPInterface -Dhcp 'Enabled'

Перезапустить интерфейс с именем Ethernet для получения параметров от #DHCP:

1
Get-NetAdapter -InterfaceIndex 5 | Restart-NetAdapter

Автоматизация

Скрипт не имеет вводных параметров. Все параметры настраиваются вручную через редактирование скрипта. Далее, скрипт запускается и применяет указанные параметры.

pwsh.set.ip.ps1
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<#PSScriptInfo
  .VERSION      0.1.0
  .GUID         b42524a4-c0d0-4402-951c-e97aa140698e
  .AUTHOR       Kai Kimera
  .AUTHOREMAIL  mail@kai.kim
  .COMPANYNAME  Library Online
  .COPYRIGHT    2023 Library Online. All rights reserved.
  .LICENSEURI   https://choosealicense.com/licenses/mit/
  .PROJECTURI   https://lib.onl/ru/articles/2023/10/430b916d-fd5c-5d44-8c24-8b98f41e0355/
#>

#Requires -Version 7.2
#Requires -RunAsAdministrator

# -------------------------------------------------------------------------------------------------------------------- #
# CONFIGURATION.
# -------------------------------------------------------------------------------------------------------------------- #

$Adapter = @{
  # Interface index.
  InterfaceIndex = 0
}

$IP = @{
  # IP address.
  IPAddress = '192.168.0.10'
  # Subnet mask.
  PrefixLength = '24'
  # Gateway.
  DefaultGateway = '192.168.0.1'
}

$DNS = @{
  # DNS servers.
  ServerAddresses = (
    '192.168.0.2',
    '192.168.1.2'
  )
}

# -------------------------------------------------------------------------------------------------------------------- #
# -------------------------------------------------< RUNNING SCRIPT >------------------------------------------------- #
# -------------------------------------------------------------------------------------------------------------------- #

Get-NetAdapter @Adapter | Remove-NetIPAddress -Confirm:$false   # Removing current IP address.
Get-NetAdapter @Adapter | Remove-NetRoute -Confirm:$false       # Removing current gateway.
Get-NetAdapter @Adapter | New-NetIPAddress @IP                  # Setting new IP address.
Get-NetAdapter @Adapter | Set-DNSClientServerAddress @DNS       # Setting new DNS servers.