Всем привет.
Продолжим дергать сетевые настройки с помощью Powershell. Начинал я это делать еще здесь.
А сегодня продолжим работу вместе с другим гуру ИТ-администрирования. Сегодня мы рассмотрим основные командлеты, которые позволяют узнать текущий адрес сетевого адаптера, назначить статический IP адрес, DNS сервера, или настроить сетевой интерфейс на получение конфигурации IP от DHCP сервера. Вы можете использовать эти командлеты для настройки сети как в Windows 10/11, так и в Windows Server (или версии Sever Core), в Hyper-V Server, для изменения настроек IP сетевых адаптеров на удаленных компьютерах, и в PowerShell скриптах.
Содержание:
- Управление сетевыми адаптерами в Windows из PowerShell
- Вывести настройки IP сетевого подключения с PowerShell
- PowerShell: задать статический IP адрес в Windows
- Set-DnsClientServerAddress: настроить адреса DNS серверов
- Управление таблицей маршрутизации с помощью PowerShell
- PowerShell: получить IP адрес в Windows от DHCP сервера
- Изменить параметры IP и DNS на удаленном компьютере Windows
В предыдущих версиях в Windows для управления сетевыми настройками из cmd использовалась из CLI использовалась команда netsh. В PowerShell 3.0 и выше для управления сетевыми настройками Windows можно использовать встроенный PowerShell модуль NetTCPIP.
Чтобы получить список командлетов в этом модуле, выполните:
get-command -module NetTCPIP
В этот модуль также входит командлет Test-NetConnection, который можно использовать для проверки доступности TCP портов на удаленных компьютерах.
Управление сетевыми адаптерами в Windows из PowerShell
Выведите список доступных сетевых интерфейсов в Windows:
Get-NetAdapter
Командлет возвращает имя интерфейса, состояние (Up/Down), MAC адрес, скорость на порту.
Чтобы вывести только активные физические сетевые интерфейсы:
Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}
Можно вывести только определенные параметры сетевых адаптеров, например: имя, скорость, состояние и MAC адрес:
Get-NetAdapter |Select-Object name,LinkSpeed,InterfaceOperationalStatus,MacAddress
В Windows могут присутствовать скрытые сетевые адаптеры. Чтобы вывести их все, добавьте параметр IncludeHidden:
Get-NetAdapter –IncludeHidden
Команда вернет в том числе все виртуальные WAN Miniport адаптеры, которые используются для различных типов подключений включая VPN. Перезапуск этих адаптеров часто позволяет решить некоторые ошибки VPN подключений с помощью встроенного клиента Windows. Для управления сетевыми подключениями VPN доступны отдельные команды PowerShell.
Вы можете обращаться к сетевым интерфейсам по их именам или индексам (столбец 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 слот, шина и т.д.).
Get-NetAdapterHardwareInfo
Вывести настройки IP сетевого подключения с PowerShell
Получить текущие настройки сетевого интерфейса (IP адрес, DNS, шлюз):
Get-NetIPConfiguration -InterfaceAlias Ethernet0
Чтобы вывести более подробную информацию о конфигурации сетевого интерфейса, используйте команду:
Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed
В этом случае выводится назначенный профиль сети интерфейса (NetProfile.NetworkCategory), настройки MTU (NetIPv4Interface.NlMTU), включено ли получение адреса от DHCP (NetIPv4Interface.DHCP) и ряд другой полезной информации.
Вывести все IPv4 адреса интерфейсов Windows:
Get-NetIPAddress -AddressFamily ipv4|ft
Получить значение только IP адрес интерфейса:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address
Получить текущие настройки стека TCP на компьютере можно с помощью команды:
Get-NetTCPSetting
Вывести список сетевых протоколов, которые можно включить/отключить для сетевого адаптера:
Get-NetAdapterBinding -Name ethernet -IncludeHidden -AllBindings
Для просмотра активных TCP IP сессий на компьютере используется командлет Get-NetTCPConnection.
PowerShell: задать статический IP адрес в Windows
С помощью PowerShell вы можете задать статический IP адрес для сетевого интерфейса. Чтобы изменить IP адрес, маску подсети и шлюз для сетевого интерфейса, выполните:
Get-NetAdapter -Name Ethernet0| New-NetIPAddress –IPAddress 192.168.1.80 -DefaultGateway 192.168.1.1 -PrefixLength 24
Можно задать IP адрес, представив его в виде массива (более наглядно):
$ipParams = @{
InterfaceIndex = 8
IPAddress = "192.168.1.25"
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
Удалить статический IP адрес:
Remove-NetIPAddress -IPAddress "xxx.xxx.xxx.xxx"
Отключить протокол IPv6 для сетевого интерфейса:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled $false -ComponentID ms_tcpip6
Отключить протокол NetBIOS для интерфейса:
Set-NetAdapterBinding -Name Ethernet0 -ComponentID ms_netbios -AllBindings -Enabled $True
Set-DnsClientServerAddress: настроить адреса DNS серверов
Чтобы задать адреса первичного и вторичного DNS серверов в Windows, используется командлет Set-DNSClientServerAddress. Например:
Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.1.11,10.1.1.11
Первый IP адрес адрес выставляется в качестве Preffered DNS, а второй в Alternate DNS.
Можно также задать DNS сервера через массив:
$dnsParams = @{
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8","4.4.4.4")
}
Set-DnsClientServerAddress @dnsParams
После изменения настроек DNS, можно очистить DNS кэш (эквивалент ipconfig /flushdns ):
Clear-DnsClientCache
Вывести содержимое DNS кэша в Windows:
Get-DnsClientCache
Управление таблицей маршрутизации с помощью PowerShell
Для просмотра таблицы маршрутизации используется командлет Get-NetRoute.
Вывести маршрут по умолчанию для физического сетевого интерфейса в Windows:
Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}| Get-netroute| where DestinationPrefix -eq "0.0.0.0/0"
Чтобы добавить новый маршрут, используется New-NetRoute:
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.0.1" -InterfaceIndex 8
Эта команда добавит постоянный маршрут в таблицу маршрутизации (аналог route -p add). Если вы хотите добавить временный маршрут, добавьте опцию -PolicyStore "ActiveStore" . Такой маршрут будет удален после перезагрузки Windows.
Удалить маршрут из таблицы маршрутизации:
Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$False
PowerShell: получить IP адрес в Windows от 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
Если нужно сбросить все настройки IPv4 для сетевых интерфейсов компьютера и переключить их на получение адреса от DHCP, используйте такой скрипт:
$IPType = "IPv4"
$adapter = Get-NetAdapter | ? {$_.Status -eq "up"}
$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
}
Изменить параметры IP и DNS на удаленном компьютере Windows
Вы можете использовать PowerShell чтобы удаленно изменить настройки IP адреса или DNS серверов на нескольких удаленных компьютерах. Допустим, ваша задача – изменить настройки DNS для всех серверов в указанном Organization Unit (OU) в Active Directory. Для получения списка компьютеров в скрипте ниже примере используется командлет Get-ADComputer, а удаленное подключение к компьютерам выполняется через WinRM (командлет Invoke-Command):
$Servers = Get-ADComputer -SearchBase ‘OU=Dubai,DC=forza,DC=com’ -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","4.4.4.4"
$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}
}
}
No comments:
Post a Comment
А что вы думаете по этому поводу?