Настройка сети с помощью PowerShell (IP адрес, DNS, шлюз, маршруты)
В этой статье мы рассмотрим особенности настройки параметров сетевых адаптеров в Windows из PowerShell. Посмотрим, как узнать и назначить статический IP адрес, DNS сервера, или настроить сетевой интерфейс на получение конфигурации IP от DHCP сервера. Вы можете использовать эти командлеты для настройки сети в Сore/Nano версиях Windows Server, в Hyper-V Server, изменения настроек IP на удаленных компьютерах или по сети серверах или в PS скриптах.
Ранее для настройки параметров сети в Windows из CLI использовалась команда netsh interface ipv4. В PowerShell 3.0 и выше для управления сетевыми настройками Windows можно использовать встроенный PowerShell модуль NetTCPIP.
Чтобы получить список командлетов в этом модуле, выполните:
get-command -module NetTCPIP
Управление сетевыми адаптерами из PowerShell
Выведем список доступных сетевых интерфейсов компьютера:
Командлет возвращает имя интерфейса, состояние (Up/Down), MAC адрес, скорость на порту.
В этом примере у меня на компьютере несколько сетевых адаптеров (кроме физического подключения Ethernet0 есть несколько сетевых интерфейсов от Hyper-V и VMWare Player).
Вы можете обращаться к сетевым интерфейсам по их именам или индексам (столбец ifIndex). В нашем примере, чтобы выбрать физический LAN адаптер 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 слот, шина и т.д.).
Просмотр настроек 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
Если статический IP адрес уже настроен и нужно изменить его, используется командлет Set-NetIPAddress:
Set-NetIPAddress -InterfaceIndex 8 -IPAddress 192.168.1.90
Чтобы на интерфейсе отключить получение IP адреса от DHCP, выполните:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled
Для просмотра таблицы маршрутизации используется командлет 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 кэш:
PowerShell: Настройка получения IP адреса от DHCP сервера
Чтобы сетевой интерфейс компьютера получал динамический IP адрес от DHCP сервера, выполните команду:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled
Очистите настройки DNS серверов:
Set-DnsClientServerAddress –InterfaceIndex 8 -ResetServerAddresses
И перезапустите интерфейс для получения IP адреса:
Restart-NetAdapter -InterfaceAlias Ethernet0
Если ранее у вас был настроен шлюз, удалите его:
Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false
Удаленное изменение IP/DNS настроек в Windows
Вы можете использовать PowerShell чтобы удаленно изменить настройки IP адресов или DNS серверов на нескольких удаленных компьютерах. Допустим, ваша задача – изменить настройки DNS для всех серверов в указанном контейнере AD. Для получения списка компьютеров в скрипте ниже примере используется командлет Get-ADComputer, а удаленное подключение к компьютерам выполняется через WinRM (командлет Invoke-Command):
Конфигурирование IP, DNS, шлюза в Windows с помощью PowerShell
В этой статье мы рассмотрим особенности настройки параметров сетевых адаптеров в Windows из PowerShell. Посмотрим, как узнать и назначить статический IP адрес, DNS сервера, или настроить сетевой интерфейс на получение конфигурации IP от DHCP сервера. Вы можете использовать эти командлеты для настройки сети в Сore/Nano версиях Windows Server, в Hyper-V Server , изменения настроек IP на удаленных компьютерах или по сети серверах или в PS скриптах.
Ранее для настройки параметров сети в Windows из CLI использовалась команда netsh interface ipv4. В PowerShell 3.0 и выше для управления сетевыми настройками Windows можно использовать встроенный PowerShell модуль NetTCPIP .
Чтобы получить список командлетов в этом модуле, выполните:
get-command -module NetTCPIP
В этот модуль также входит командлет Test-NetConnection , который можно использовать для проверки доступности TCP портов на удаленных компьютерах.
Управление сетевыми адаптерами из PowerShell
Выведем список доступных сетевых интерфейсов компьютера:
Командлет возвращает имя интерфейса, состояние (Up/Down), MAC адрес, скорость на порту.
В этом примере у меня на компьютере несколько сетевых адаптеров (кроме физического подключения Ethernet0 есть несколько сетевых интерфейсов от Hyper-V и VMWare Player).
Вы можете обращаться к сетевым интерфейсам по их именам или индексам (столбец ifIndex). В нашем примере, чтобы выбрать физический LAN адаптер 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 слот, шина и т.д.).
Просмотр настроек 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 Disabled
Для просмотра таблицы маршрутизации используется командлет 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 кэш:
PowerShell: Настройка получения IP адреса от DHCP сервера
Чтобы сетевой интерфейс компьютера получал динамический IP адрес от DHCP сервера, выполните команду:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled
Очистите настройки DNS серверов:
Set-DnsClientServerAddress –InterfaceIndex 8 -ResetServerAddresses
И перезапустите интерфейс для получения IP адреса:
Restart-NetAdapter -InterfaceAlias Ethernet0
Если ранее у вас был настроен шлюз, удалите его:
Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false
Удаленное изменение IP/DNS настроек в Windows
Вы можете использовать PowerShell чтобы удаленно изменить настройки IP адресов или DNS серверов на нескольких удаленных компьютерах. Допустим, ваша задача – изменить настройки DNS для всех серверов в указанном контейнере AD. Для получения списка компьютеров в скрипте ниже примере используется командлет Get-ADComputer , а удаленное подключение к компьютерам выполняется через WinRM (командлет Invoke-Command):
Установка и настройка контроллера домена на Windows Server 2012R2 с помощью PowerShell
По долгу своей службы иногда приходится устанавливать и настраивать сервера на базе Windows Server 2012 R2 в небольших организациях, где как правило не более 50 рабочих ПК, а основная роль сервера на базе Windows Server 2012 R2 — это AD, FS, DHCP, DNS. Именно поэтому в большинстве случаев я провожу типовую первоначальную настройку сервера с помощью PowerShell, а не GUI, т.к. с PowerShell — это в разы быстрее.
Ниже в статье я опишу как с помощью PowerShell без GUI:
1. Настроить часовой пояс и параметры сети для нового сервера.
2. Включить RDP, установить имя сервера.
3. Развернуть контроллер домена Active Directory.
4. Настроить службы DNS и DHCP.
Исходные данные:
ОС: Windows Server 2012 R2
Подсеть нашей организации: 192.168.100.0/24
IP-адрес первого контроллера домена: 192.168.100.2
IP-адрес шлюза в Интернет: 192.168.100.1
Имя первого контроллера домена: DC1
Имя домена: corp.myorg.ru
Netbios имя домена: DC
FQDN первого контроллера домена: DC1.corp.myorg.ru
DHCP-сервер, диапазон выдаваемых адресов: 192.168.100.10 — 192.168.100.254
Пароль Администратор: [email protected]
Итак приступим:
1. Устанавливаем Windows Server 2012R2 с графическим интерфейсом.
2. Настраиваем часовой пояс на Ekaterinburg Standard Time:
2. После установки первым делом меняем IP-адрес на сетевой карте, можно через GUI, а можно из командной строки cmd так:
2.1 Смотрим имя интерфейса:
здесь указаны:
name=Ethernet — имя сетевого интерфейса на сервере, его мы узнали в пункте 2.1
192.168.100.2 — IP-адрес нашего сервера
255.255.255.0 — маска подсети нашего сервера
192.168.100.1 — шлюз по-умолчанию в сети, у меня 192.168.100.1 это linux сервер с прозрачным прокси squid, у вас это может быть отдельный роутер
ВНИМАНИЕ! В процессе установки IP-адреса DNS сервера у нас будет выдано предупреждение:
Заданный DNS-сервер работает некорректно или не существует.
Это вполне логично, ведь мы задали в качестве DNS адрес 127.0.0.1, а самого DNS-сервера там еще нет, но он появиться после развертывания Active Directory.
2.3 Если Вы не планируете использовать в своей сети IPv6, то я настоятельно рекомендую его отключить.
В отличие от других протоколов, IPv6 нельзя отключить просто убрав галку в свойствах сетевого интерфейса.
Если поступить таким образом, то можно получить определенные проблемы с приложениями, которые используют loopback и интерфейсное туннелирование. Правильным способом отключения протокола IPv6 является его деактивация через системный реестр или с помощью MicrosoftEasyFix.
Мы скачаем MicrosoftEasyFix с сайта Microsoft.
Качаем файл «Отключение IPv6» (MicrosoftEasyFix20160.mini.diagcab) и запускаем на сервере.
Для любителей сделать все вручную через реестр, для отключения IPv6 в раздел реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters
создаем параметр DWORD (32-бита) с именем DisabledComponents и значением FF в шестнадцатеричной
системе (255 в десятичной) и перезагружаем сервер shutdown /r /t 00
или
Запускаем PowerShell от имени Администратора и вводим:
2.3 Включаем RDP, т.к. по умолчанию он выключен на сервере.
Запускаем PowerShell от имени Администратора и вводим:
3. Задаем имя нашего будущего контроллера домена.
Запускаем PowerShell от имени Администратора и вводим:
4. Развертываем Active Directory.
Традиционно для автоматической установки контроллера домена средствами командной строки использовалась команда Dcpromo, но в WindowsServer 2012 она признана устаревшей и рекомендуется использовать PowerShell, что мы и сделаем.
Как бы это выглядело через dcpromo:
Но нас интересует PowerShell, поэтому открываем консоль PowerShell от имени Администратор и выполняем пункты 4.1 и 4.2
4.1 Для установки роли доменных служб введем команду:
Параметр –IncludeAllSubFeature задает установку всех зависимых служб и компонентов вместе с родительской ролью, службой роли или компонентом, заданным параметром -Name
Параметр –IncludeManagementTools задает установку средств администрирования и управления.
На заметку: Средства Администрирования можно установить и отдельно командой:
4.2 Для создания нового домена в новом лесу введите команду:
После установки сервер будет автоматически перезагружен.
В модуле ADDSDeployment есть еще несколько полезных командлетов, перечислю их:
Add-ADDSReadOnlyDomainControllerAccount — Установка контроллера только для чтения
Install-ADDSDomain — Установить первый контроллер домена в дочернем или дереве домена
Install-ADDSDomainController — Установить дополнительный контроллер домена
Install-ADDSForest — Установить первый контроллер в новом лесу
Test-ADDSDomainControllerInstallation Verify — необходимые условия для установки дополнительного контроллера домена (проверка)
Test-ADDSDomainControllerUninstallation — удаление сервиса AD c сервера (проверка)
Test-ADDSDomainInstallation — Проверка необходимых условий для установки первого контроллера домена в дочернем или дереве домена.
Test-ADDSForestInstallation Установка первого контроллера в новом лесу (проверка)
Test-ADDSReadOnlyDomainControllerAccountCreation — Проверка необходимых условий для установки контроллера только для чтения
Uninstall-ADDSDomainController — Удаление контроллера домена с сервера
5. Приступить к дальнейшей настройке сервера, и первое, что нам нужно сделать — это создать обратную зону (reverse lookup zone) для нашей подсети 192.168.100.0/24 и добавить в неё PTR запись dc1.corp.myorg.ru с IP-адресом 192.168.100.2
Тут возможно 2 подхода: создать обратную зону из оболочки cmd с помощью dnscmd или на PowerShell.
Запускаем командную строку cmd от имени Администратора и вводим:
5.2 Вариант с PowerShell
Запускаем PowerShell от имени Администратора и вводим:
Теперь если мы сделаем: nslookup 192.168.100.2 то у нас произойдет нормальное обратное преобразование.
6. Теперь нам необходимо установить и настроить DHCP-сервер:
Запускаем PowerShell от имени Администратора и вводим:
Добавим на сервер группы Пользователи DHCP и Администраторы DHCP:
Авторизируем наш новый DHCP сервера в домене Active Directory:
Зарегистрируем сервер DHCP для обновления зон в DNS:
Теперь выведем список авторизованных DHCP серверов в Active Directory:
Добавляем область и диапазон выдаваемых адресов для неё:
Устанавливаем параметры DHCP-сервера:
Посмотрим результат конфигурации:
Установим параметры для области 192.168.100.0:
На заметку: Если после конфигурации DHCP выходит сообщение, что конфигурация не настроена, то выполняем:
Теперь можно перезагрузить сервер:
На этом настройка сервера завершена, после перезагрузки у нас будет работоспособный домен Active Directory со службами DNS и DHCP.
На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.








