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

В этой статье мы покажем вам, как настроить параметры сетевого адаптера в 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}
	}
}

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

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

wp-puzzle.com logo