В этой статье мы покажем вам, как настроить параметры сетевого адаптера в Windows через PowerShell. Мы узнаем, как получить и установить статический IP-адрес и DNS (серверы имён), настроить сетевой интерфейс для получения IP-конфигурации от DHCP-сервера. Вы можете использовать эти командлеты для настройки сети в версиях Core/Nano Windows Server, в Hyper-V Server, для изменения настроек IP на удалённых компьютерах/серверах и в ваших скриптах для персональных компьютеров.
Ранее для настройки сетевых параметров Windows из интерфейса командной строки использовалась команда netsh interface ipv4. В PowerShell 3.0 и новее вы можете использовать встроенный модуль PowerShell NetTCPIP для управления настройками сети Windows.
Чтобы получить список командлетов в этом модуле, выполните следующую команду:
get-command -module NetTCPIP
Этот модуль также включает командлет Test-NetConnection, который можно использовать для проверки доступности порта TCP на удалённых компьютерах.
Управление сетевыми адаптерами с помощью PowerShell
Отобразить список доступных сетевых интерфейсов на компьютере:
Get-NetAdapter
Командлет возвращает имя интерфейса, его состояние (Up/Down), MAC-адрес и скорость порта.
В этом примере у меня есть несколько сетевых адаптеров на моем компьютере (помимо физического подключения Ethernet0, у меня есть несколько сетевых интерфейсов Hyper-V и VMWare Player).
Вы можете ссылаться на сетевые интерфейсы по их именам или индексам (столбец ifIndex). В нашем примере, чтобы выбрать физический сетевой адаптер Intel 82574L, используйте команду:
Get-NetAdapter -Name "Ethernet0"
или же:
Get-NetAdapter -InterfaceIndex 8
Вы можете изменить имя адаптера:
Rename-NetAdapter -Name Ethernet0 -NewName LAN
Чтобы отключить сетевой интерфейс, используйте эту команду:
Get-NetAdapter -InterfaceIndex 13| Disable-NetAdapter
Когда вы включаете интерфейс, вы не можете использовать его индекс, поскольку он ещё не назначен. Вы можете указать имя или описание адаптера:
Enable-NetAdapter -InterfaceDescription “Hyper-V Virtual Ethernet Adapter"
Если для адаптера указана VLAN, вы можете отобразить её следующим образом:
Get-NetAdapter | ft Name, Status, Linkspeed, VlanID
Вот как можно получить информацию об используемом драйвере сетевого адаптера:
Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName
Информация о физических сетевых адаптерах (слот PCI, шина и т. д.):
Get-NetAdapterHardwareInfo
Как просмотреть настройки сетевого адаптера TCP/IP с помощью PowerShell?
Чтобы получить текущие настройки сетевого адаптера (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
Использование PowerShell для установки статического IP-адреса
Попробуем установить статический IP-адрес для сетевой карты. Чтобы изменить IP-адрес, маску подсети и шлюз по умолчанию для сетевого интерфейса, используйте:
New-NetIPAddress –IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24 -InterfaceIndex 8
Вы можете установить IP-адрес, используя структуру массива (более наглядно):
$ipParams = @{ InterfaceIndex = 8 IPAddress = "192.168.2.50" PrefixLength = 24 AddressFamily = "IPv4" } New-NetIPAddress @ipParams
Вы можете использовать New-NetIPAddress, чтобы добавить второй IP-адрес (псевдоним) к сетевому адаптеру.
Если статический IP-адрес уже был настроен и вы хотите его изменить, используется командлет Set-NetIPAddress:
Set-NetIPAddress -InterfaceIndex 8 -IPAddress 192.168.2.90
Чтобы отключить получение IP-адреса от DHCP для вашего адаптера, выполните команду:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled
Для просмотра таблицы маршрутизации используется командлет Get-NetRoute. Чтобы добавить новый маршрут, используйте командлет New-NetRoute:
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.2.2" -InterfaceIndex 8
Чтобы отключить протокол IPv6 для сетевого адаптера:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6
Set-DnsClientServerAddress: установка адресов первичного и вторичного DNS-серверов
Чтобы установить IP-адреса первичного и вторичного DNS-серверов в Windows, используйте командлет Set-DNSClientServerAddress. Например:
Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.2.11,10.1.2.11
Вы также можете установить серверы имён, используя массив:
$dnsParams = @{ InterfaceIndex = 8 ServerAddresses = ("8.8.8.8","8.8.4.4") } Set-DnsClientServerAddress @dnsParams
После изменения настроек DNS вы можете очистить кеш резолвера:
Clear-DnsClientCache
Как изменить статический IP-адрес на DHCP с помощью PowerShell?
Чтобы компьютер мог получать динамический IP-адрес от DHCP-сервера для сетевого адаптера, выполните следующую команду:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled
Очистка настройки DNS-сервера:
Set-DnsClientServerAddress –InterfaceIndex 8 -ResetServerAddresses
И перезапустите адаптер, чтобы автоматически получить IP-адрес от DHCP-сервера:
Restart-NetAdapter -InterfaceAlias Ethernet0
Если у вас ранее был настроен шлюз по умолчанию, удалите его:
Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false
Как удалённо изменить IP-адрес и настройки DNS с помощью PowerShell?
Вы можете использовать PowerShell для удалённого изменения IP-адреса или настроек DNS-сервера на нескольких удалённых компьютерах. Предположим, ваша задача — изменить настройки DNS для всех серверов в конкретном контейнере AD (Organizational Unit). Чтобы получить список компьютеров в приведённом ниже скрипте, используется командлет Get-ADComputer, а для удалённого подключения к компьютерам используется 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} } }
Связанные статьи:
- Не работает DNS через VPN в Windows 10 (РЕШЕНО) (84.2%)
- Windows 10: нет подключения к Интернету после подключения к VPN-серверу (РЕШЕНО) (84.2%)
- Как изменить сетевое расположение с общедоступного на частное в Windows 10, Windows 11 и Windows Server 2016/2019/2022? (73.7%)
- Как изменить Тип сетевого профиля (Открытая и Частная сеть) в Windows 11 (73.7%)
- Как отключить от сети виртуальную машину VirtualBox (69.2%)
- Как подключить Apple AirPods Pro к любому устройству (RANDOM - 50%)