Powershell зарегистрировать адреса этого подключения в dns

Обновлено: 04.07.2024

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

Получить значение только 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):

date

23.07.2021

directory

PowerShell, Windows 10, Windows Server 2016

comments

комментариев 9

В этой статье мы рассмотрим особенности настройки параметров сетевых адаптеров в 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 NetTCPIP для управления сетевыми настройками в windows

В этот модуль также входит командлет Test-NetConnection, который можно использовать для проверки доступности TCP портов на удаленных компьютерах.

Управление сетевыми адаптерами из PowerShell

Выведем список доступных сетевых интерфейсов компьютера:

Командлет возвращает имя интерфейса, состояние (Up/Down), MAC адрес, скорость на порту.

В этом примере у меня на компьютере несколько сетевых адаптеров (кроме физического подключения Ethernet0 есть несколько сетевых интерфейсов от Hyper-V и VMWare Player).

Get-NetAdapter

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

Get-NetAdapter -Name "Ethernet0"

Get-NetAdapter -InterfaceIndex 8

Get-NetAdapter выбрать сетевое подключене по имени или индексу

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

Rename-NetAdapter -Name Ethernet0 -NewName LAN

Чтобы выключить сетевой интерфейс, используйте команды:

Get-NetAdapter -InterfaceIndex 13| Disable-NetAdapter

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

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

Disable-NetAdapter - включить/отключить сетевой интерфейс

Если для адаптера указан VLAN, можно вывести его так:

Get-NetAdapter | ft Name, Status, Linkspeed, VlanID

Информация об используемом драйвере сетевого адаптера:

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

Get-NetAdapter получить версию драйвера сетевого адаптера

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

Просмотр настроек TCP/IP сетевого интерфейса из PowerShell

Получить текущие настройки сетевого интерфейса (IP адрес, DNS, шлюз):

Get-NetIPConfiguration -InterfaceAlias Ethernet0

Get-NetIPConfiguration настройка сетевого интерфейса Ethernet0

Чтобы вывести более подробную информацию о конфигурации сетевого интерфейса, используйте команду:

Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed

Get-NetIPConfiguration настройки сети

Получить значение только 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):

$Servers = Get-ADComputer -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -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.1.11","8.8.4.4"
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object
Write-Host "Old DNS settings: "
$Adapters | ForEach-Object
$Adapters | ForEach-Object | Out-Null
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object
Write-Host "New DNS settings: "
$Adapters | ForEach-Object
>
>

Предыдущая статья Следующая статья

page

page

page

Защита RDP от подбора паролей с блокировкой IP правилами Windows Firewall Когда истекает пароль пользователя в AD, оповещаем пользователей о необходимости сменить пароль Модуль PSWindowsUpdate: управление обновлениями Windows из PowerShell Пропадает языковая панель в RDP сеансе после завершения теневой сессии

А нет ли способа сделать с помощью PowerShell следующее:

Есть Win2003 server в рабочей группе. PowerShell не стоит, но можно поставить 2.0.

Нужно: с Win2k3 srv экспортировать учетки пользователей и импортировать их на новый Win2012srv.

Можно набить всех пользователей руками, их там 2-3 десятка. Можно написать батник (пароли юзеров известны). Но, может быть, есть способ экспорта-импорта?

а можно сделать образец для изменения настроек сети со статических адресов на динамическое получение по DHCP?
само собой все компьютеры в домене

Можно использовать такой скрипт PowerShell скрипт для переключения клиента на DHCP и запускать его через GPO для десктопных версий Windows:

$IPType = "IPv4"
$adapter = Get-NetAdapter | ?
$interface = $adapter | Get-NetIPInterface -AddressFamily $IPType
If ($interface.Dhcp -eq "Disabled") If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) $interface | Remove-NetRoute -Confirm:$false
>
$interface | Set-NetIPInterface -DHCP Enabled
$interface | Set-DnsClientServerAddress -ResetServerAddresses
>

Использую скрипт включение DHCP через GPO на запуск ПК. По логам скрипт отрабатывает, но настройка сетевого адаптера не меняются. Как быть?

Вы запускаете его через логон скрипт? Скрипт не отрабатывает только через GPO, при ручном запуске работает?

Когда выполняю команду
Get-NetIPConfiguration -All -Detailed | Where-Object
то получаю следующий результат:

Я пишу сценарий для автоматической установки параметров «Зарегистрировать адреса этого подключения в DNS» и «Использовать DNS-суффикс этого подключения в DNS» в расширенных настройках TCP / IP на новом устройстве «из коробки».

Я успешно просматривал настройки сети перед запуском скрипта, чтобы эти настройки были установлены. Я хочу избежать этого любой ценой.

Когда я запускаю этот код в powershell, устанавливается только флажок «Зарегистрировать адреса этого подключения в DNS», а не «Использовать DNS-суффикс этого подключения в DNS».

2 ответа

Есть несколько способов сделать это. Я склонен использовать метод WMI. Первое, что нужно сделать, - это получить все адаптеры с включенным IP. Если у вас есть это, все, что вам нужно сделать, это использовать метод SetDynamicDNSRegistration. Этот метод принимает две перегрузки, оба являются логическими и отображаются на два флажка (зарегистрируйте адреса этого соединения в DNS и используйте DNS-суффикс этого соединения в DNS). В приведенном ниже примере будет установлен флажок Зарегистрировать адреса этого подключения в DNS и снимите флажок Использовать DNS-суффикс этого подключения в DNS ".

Этот пример привел бы к проверке обоих полей:

Я столкнулся с той же проблемой.

При настройке «Использовать DNS-суффикс этого соединения» с помощью командлета Set-DNSClient он запускается успешно. Выполнение командлета Get-DNSClient показывает, что параметр корректно настроен, но соответствующий раздел реестра не создается и графический интерфейс не обновляется.

Ключ - HKLM: \ System \ CurrentControlSet \ Services \ TCPIP \ Paramters \ Interfaces \ Property - RegisterAdapterName

Во время тестирования я заметил, что после создания ключа с помощью кода WMI, описанного выше, REGEDIT или графического интерфейса командлеты PowerShell корректно изменяют ключ реестра / графический интерфейс.

Я прибег к использованию кода, аналогичного примеру, предоставленному DaSmokeDog, для принудительного создания ключей реестра для данного адаптера, а затем возвращаюсь к использованию простых командлетов PowerShell.

Не идеально работать так, но мое (ограниченное) тестирование показывает, что это работает.

После снимите флажок Зарегистрировать адреса этого подключения в DNS на клиентском компьютере, клиент не удаляется с сервера его записи системы доменных имен (DNS). Дополнительные сведения о настройке см. на следующем снимке экрана:


Решение

Чтобы устранить эту проблему, выполните указанные ниже действия настройки клиентского компьютера.

Для клиентских компьютеров, которые настроены на использование статического IP-адреса

Если клиентский компьютер использует статический IP-адрес, выполните следующие действия на компьютере клиента для удаления записи с сервера DNS.

Снимите флажок Зарегистрировать адреса этого подключения в DNS .

Триггер регистрации DNS-записи. Для этого воспользуйтесь одним из следующих шагов, которые перечислены в порядке предпочтения.

Перезапустите службу DNS-клиента.

Перезагрузите компьютер под управлением Windows.

Откройте окно командной строки как администратор, а затем выполнить команду ipconfig/registerdns .

Примечание 1 Если один или несколько адаптеров на многосетевом клиента или сервера настроены с использованием адреса протокола динамической конфигурации узла (DHCP), см. Примечание 3 в разделе «для клиентских компьютеров, которые настроены на использование динамический IP-адрес».

Для клиентских компьютеров, настроенных на использование динамического IP-адреса

Примечание 2 После снимите флажок Зарегистрировать адреса этого подключения в DNS на вкладке DNS в окне Дополнительные параметры TCP/IP свойства TCP/IPv4 или TCP/IPv6, следующий узел удаляется из реестра локального компьютера::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DNSRegisteredAdapters\
Это применимо для обоих клиентов, которые используют статические IP-адреса и клиенты, использующие динамические IP-адреса.

Обратите внимание, что 3 Если адаптер настроен на использование динамических IP-адресов (DHCP) на компьютере, перечислены в разделе «Относится к продукты» данной статьи, не запускайте команды ipconfig/registerdns . Динамическое назначение IP-адресов используется сервер DHCP регистрировать PTR-записи и при необходимости узла «A» и «AAAA» записей от имени DHCP-клиентов. Определяет конфигурацию DHCP-сервера, как «» и «AAAA» регистрации добавляются. После выполнения команды ipconfig/registerdns DNS-записи регистрируются с помощью дескриптора безопасности локального компьютера. Это предотвращает обновление записи, пока не будет удалено вручную записи DHCP-сервера. Повторим, если DHCP-сервер не имеет разрешения на обновление записей DNS, DHCP регистрации автоматически завершается неудачей.

Для DHCP-клиентов рекомендуется выполнить следующие действия:

Перезапустите службу «DNS-клиент». Чтобы сделать это, выполните следующие команды:
net stop DNSCACHE
net start DNSCACHE

Выполните следующие команды для обновления DNS registration(s) для DHCP-клиентов:
ipconfig/release
ipconfig / renew

Для получения дополнительных сведений обратитесь к статье DNS процессов и взаимодействий .

Дополнительные сведения о IPv4 и IPv6 DNS-вкладка «Дополнительно» посетите следующий веб-узел корпорации Майкрософт:

Чтобы определить, использует ли сетевой адаптер статические IP-адреса или динамический IP-адрес, выполните следующие действия.

Откройте окно командной строки.

Запустите ipconfig/all команды.

В результатах Если поле DHCP включен в сетевой адаптер отображается как Да, сетевой адаптер, использует динамический IP-адрес. Если он отображается как Нет, сетевой адаптер использует статические IP-адреса.

Читайте также: