Настройка на мрежата чрез PowerShell (IP адрес, DNS, шлюз, маршрути)

В тази статия ще разгледаме характеристиките на конфигурирането на мрежови адаптери в Windows от PowerShell. Нека да видим как да разберем и назначим статичен IP адрес, DNS сървър или да конфигурираме мрежовия интерфейс за получаване на IP конфигурация от DHCP сървър. Можете да използвате тези командлети, за да конфигурирате мрежата във Core / Nano версии на Windows Server, в Hyper-V Server, за да промените IP настройките на отдалечени компютри или мрежови сървъри или в PS скриптове.

Преди това командата ipv4 на интерфейса netsh беше използвана за конфигуриране на мрежовите настройки в Windows от CLI. В PowerShell 3.0 и по-нови версии можете да използвате вградения модул PowerShell за управление на мрежовите настройки на Windows NetTCPIP.

За да получите списък с командлети в този модул, изпълнете:

get-command -модул NetTCPIP

Този модул включва и командлета Test-NetConnection, който може да се използва за проверка на наличността на TCP портовете на отдалечени компютри..

Съдържание:

  • Управление на мрежови адаптери от PowerShell
  • Прегледайте настройките на TCP / IP мрежовия интерфейс от PowerShell
  • Конфигурирайте статичен IP адрес от PowerShell
  • Set-DnsClientServerAddress: конфигуриране на адреси на DNS сървъри
  • PowerShell: Конфигуриране на получаване на IP адрес от DHCP сървър
  • Променете дистанционно IP / DNS настройки в Windows

Управление на мрежови адаптери от PowerShell

Ние изброяваме наличните мрежови интерфейси на компютъра:

Get-NetAdapter

Cmdlet връща името на интерфейса, състоянието (нагоре / надолу), MAC адрес, скоростта на порта.

В този пример имам няколко мрежови адаптера на моя компютър (в допълнение към физическата връзка Ethernet0 има няколко мрежови интерфейса от Hyper-V и VMWare Player).

Можете да получите достъп до мрежовите интерфейси чрез техните имена или индекси (колона ifIndex). В нашия пример, за да изберете физическия LAN адаптер Intel 82574L, трябва да въведете командата:

Get-NetAdapter -Име "Ethernet0"

или

Get-NetAdapter -InterfaceIndex 8

Можете да промените името на адаптера:

Преименуване-NetAdapter -Име Ethernet0 -NewName LAN

За да изключите мрежовия интерфейс, използвайте командите:

Get-NetAdapter -InterfaceIndex 13 | Disable-NetAdapter

Когато включите интерфейса, не можете да посочите неговия индекс, защото той не е назначен. Можете да посочите името на адаптера или неговото описание.

Enable-NetAdapter -InterfaceDescription „Hyper-V Virtual Ethernet Adapter“

Ако е зададен VLAN за адаптера, можете да го покажете така:

Get-NetAdapter | ft Име, Статус, Linkpeed, VlanID

Информация за използвания драйвер на мрежовия адаптер:

Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName

Информация за физически адаптери за мрежа (PCI слот, шина и т.н.).

Get-NetAdapterHardwareInfo

Прегледайте настройките на TCP / IP мрежовия интерфейс от PowerShell

Вземете текущите настройки на мрежовия интерфейс (IP адрес, DNS, шлюз):

Get-NetIPConfiguration -InterfaceAlias ​​Ethernet0

За да покажете по-подробна информация за конфигурацията на мрежовия интерфейс, използвайте командата:

Get-NetIPConfiguration -InterfaceAlias ​​Ethernet0 -Detailed

В този случай се включва зададеният мрежов профил на интерфейса (NetProfile.NetworkCategory), настройките на MTU (NetIPv4Interface.NlMTU), дали получаване на адреси от DHCP (NetIPv4Interface.DHCP) и друга полезна информация е включена.

Вземете само стойност на IP адрес на интерфейса:

(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress) .IPv4Address

Конфигурирайте статичен IP адрес от PowerShell

Нека се опитаме да зададем статичен IP адрес за мрежовия интерфейс. За да промените IP адреса, маската на подмрежата и шлюза за мрежовия интерфейс:

New-NetIPAddress -IPAddress 192.168.1.80 -DefaultGateway 192.168.1.1 -PrefixLength 24 -InterfaceIndex 8

Можете да зададете IP адреса, като го представите като по-голям масив (по-ясно):

$ ipParams = @
InterfaceIndex = 8
IPAddress = "192.168.1.22"
PrefixLength = 24
AddressFamily = "IPv4"

New-NetIPAddress @ipParams

Можете да използвате командлета New-NetIPAddress, за да добавите втори IP адрес към мрежовия интерфейс..

Ако статичният IP адрес вече е конфигуриран и трябва да го промените, използвайте командлета Set-NetIPAddress:

Set-NetIPAddress -InterfaceIndex 8 -IPAddress 192.168.1.90

За да деактивирате получаването на IP адреси от DHCP в интерфейса, направете:

Set-NetIPInterface -InterfaceAlias Ethernet0 -DHCP Деактивиран

Използвайте командлета, за да видите таблицата за маршрутизиране. Get-NetRoute. За да добавите нов маршрут, използвайте New-NetRoute:

New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.0.1" -InterfaceIndex 8

Деактивирайте протокола IPv6 за мрежовия интерфейс:

Get-NetAdapterBinding -InterfaceAlias ​​Ethernet0 | Set-NetAdapterBinding -Enabled: $ false -ComponentID ms_tcpip6

Set-DnsClientServerAddress: конфигуриране на адреси на DNS сървъри

За да зададете основния и вторичния адрес на DNS сървъра в Windows, използвайте командлета Set-DNSClientServerAddress. Например:

Set-DNSClientServerAddress -InterfaceIndex 8 -ServerAddresses 192.168.1.11,10.1.1.11

Можете също да зададете DNS сървъра чрез масив:

$ dnsParams = @
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8", "8.8.4.4")

Set-DnsClientServerAddress @dnsParams

След като промените настройките на DNS, можете да изчистите кеша на DNS:

Clear-DnsClientCache

PowerShell: Конфигуриране на получаване на IP адрес от DHCP сървър

За да може мрежовият интерфейс на компютъра да получи динамичен IP адрес от DHCP сървъра, изпълнете командата:

Set-NetIPInterface -InterfaceAlias ​​Ethernet0 -Dhcp Активиран

Изчистване на настройките на DNS сървъра:

Set-DnsClientServerAddress -InterfaceIndex 8 -ResetServerAddresses

И рестартирайте интерфейса, за да получите IP адреса:

Рестартирайте-NetAdapter -InterfaceAlias ​​Ethernet0

Ако преди това сте конфигурирали шлюза, го изтрийте:

Set-NetIPInterface -InterfaceAlias ​​Ethernet0 | Remove-NetRoute -Confirm: $ false

Променете дистанционно IP / DNS настройки в Windows

Можете да използвате PowerShell за дистанционна промяна на настройките на IP адреси или DNS сървъри на множество отдалечени компютри. Да предположим, че вашата задача е да промените настройките на DNS за всички сървъри в посочения AD контейнер. За да получите списъка с компютри в скрипта по-долу, се използва командлета Get-ADComputer и отдалечената връзка с компютрите се осъществява чрез WinRM (Invoke-Command cmdlet):

$ Servers = Get-ADComputer -SearchBase 'OU = Москва, DC = winitpro, DC = loc' -Filter '(подобен на OperatingSystem "Windows Server *")' | Име на сортиране на обект
ForEach ($ сървър в $ сървъри)
Хост за запис "Server $ ($ Server.Name)"
Invoke-Command -ComputerName $ Server.Name -ScriptBlock
$ NewDnsServerSearchOrder = "192.168.1.11", "8.8.4.4"
$ Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Къде-Обект $ _. DHCPEnabled -ne 'True' -и $ _. DNSServerSearchOrder -ne $ null
Напишете хост „Стари настройки на DNS:“
$ Адаптери | ForEach-Object $ _. DNSServerSearchOrder
$ Адаптери | ForEach-Object $ _. SetDNSServerSearchOrder ($ NewDnsServerSearchOrder) | Out-Null
$ Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Къде-Обект $ _. DHCPEnabled -ne 'True' -и $ _. DNSServerSearchOrder -ne $ null
Напишете хост „Нови настройки на DNS:“
$ Адаптери | ForEach-Object $ _. DNSServerSearchOrder