Búsqueda de sitios web

Configure los ajustes de red en Windows con PowerShell: dirección IP, DNS, puerta de enlace predeterminada, rutas estáticas


En Windows, puede administrar la configuración de sus adaptadores de red no solo desde la GUI sino también desde el símbolo del sistema de PowerShell. En este artículo, veremos los cmdlets más importantes que puede usar para averiguar la dirección IP actual de un adaptador de red, asignar una dirección IP estática, asignar IP de servidor DNS o configurar una interfaz de red para recibir una configuración de IP de un servidor DHCP. Puede usar estos cmdlets para configurar redes en Windows 10/11 y Windows Server (o ediciones Server Core), Hyper-V Server, para cambiar la configuración de IP de los adaptadores de red en equipos remotos y en sus scripts de automatización de PowerShell.

Anteriormente, el

netsh interface ipv4 

El comando se usó para administrar la configuración de red desde la CLI. En PowerShell 3.0 y posteriores, puede usar el módulo de PowerShell NetTCPIP integrado para administrar la configuración de red en Windows.

Para obtener la lista de cmdlets en este módulo, ejecute el siguiente comando:

get-command -module NetTCPIP

Este módulo también incluye el cmdlet Test-NetConnection que se puede utilizar para encontrar puertos TCP abiertos en equipos remotos.

Administrar la configuración del adaptador de red a través de PowerShell

Enumere las interfaces de red disponibles en una computadora con Windows:

Get-NetAdapter

El cmdlet devuelve el nombre de la interfaz, su estado (activo/inactivo), la dirección MAC y la velocidad del puerto.

En este ejemplo, tengo varios adaptadores de red en mi computadora (además de la conexión física, Ethernet0, tengo interfaces de red Hyper-V y VMWare Player).

Para mostrar solo las interfaces de red física habilitadas:

Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}

Puede ver solo ciertos parámetros del adaptador de red, como el nombre, la velocidad, el estado o la dirección MAC:

Get-NetAdapter |Select-Object name,LinkSpeed,InterfaceOperationalStatus,MacAddress

Windows puede tener algunos adaptadores de red ocultos. Para mostrarlos todos, agregue el parámetro IncludeHidden:

Get-NetAdapter -IncludeHidden

El resultado será una lista de todos los adaptadores de minipuerto de WAN virtual que se utilizan para diferentes tipos de conexiones, incluida VPN. Un reinicio de estos adaptadores a menudo corrige algunos errores de conexión VPN con el cliente de Windows incorporado. Hay cmdlets de PowerShell separados para administrar conexiones VPN.

Puede hacer referencia a las interfaces de red por sus nombres o índices (la columna Índice). En nuestro ejemplo, para seleccionar el adaptador LAN físico Intel 82574L Gigabit Network Connection, use el comando:

Get-NetAdapter -Name Ethernet0

o :

Get-NetAdapter -InterfaceIndex 8

Puede cambiar el nombre del adaptador:

Rename-NetAdapter -Name Ethernet0 -NewName LAN

Para deshabilitar una interfaz de red, use este comando:

Get-NetAdapter -Name Ethernet0| Disable-NetAdapter

Habilite la NIC por su nombre:

Enable-NetAdapter -Name Ethernet0

Si el adaptador de red tiene un número de VLAN configurado, puede verlo:

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

Así es como puede encontrar la información sobre el controlador del adaptador de red que está utilizando:

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

Enumere la información sobre los adaptadores de red físicos (ranura PCI, bus, etc.):

Get-NetAdapterHardwareInfo

Deshabilite el protocolo IPv6 para la interfaz de red:

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

Deshabilite el protocolo NetBIOS para una interfaz de red:

Set-NetAdapterBinding -Name Ethernet0 -ComponentID ms_netbios -AllBindings -Enabled $True

¿Cómo obtener una configuración de dirección IP con PowerShell?

Para obtener la configuración actual del adaptador de red en Windows (dirección IP, DNS, puerta de enlace predeterminada):

Get-NetIPConfiguration -InterfaceAlias Ethernet0

Para mostrar información más detallada sobre la configuración de la interfaz de red TCP/IP, use el comando

Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed

En este caso, se muestra la ubicación de red asignada (perfil) (NetProfile.NetworkCategory) de la interfaz, la configuración de MTU (NetIPv4Interface.NlMTU), si está habilitada la obtención de una dirección IP de DHCP (NetIPv4Interface.DHCP) y otra información útil.

Para obtener solo la dirección de la interfaz IPv4:

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

Devuelve el valor de la dirección IP de la interfaz solamente:

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

Al copiar archivos a máquinas virtuales, muchos administradores notaron un bajo rendimiento de la red en Windows Server 2019 con funciones de Hyper-V habilitadas. En este caso, revertir la configuración de la pila TCP a la configuración que se usó en Windows Server 2016 ayudará a resolver los problemas:

Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled

Muestre una lista de los protocolos de red que se pueden habilitar o deshabilitar para un adaptador de red:

Get-NetAdapterBinding -Name ethernet0 -IncludeHidden -AllBindings

Name                           DisplayName                                        ComponentID          Enabled
----                           -----------                                        -----------          -------
Ethernet                       File and Printer Sharing for Microsoft Networks    ms_server            True
Ethernet                       NetBIOS Interface                                  ms_netbios           True
Ethernet                       Microsoft LLDP Protocol Driver                     ms_lldp              True
Ethernet                       Microsoft NDIS Capture                             ms_ndiscap           True
Ethernet                       Internet Protocol Version 4 (TCP/IPv4)             ms_tcpip             True
Ethernet                       Microsoft RDMA - NDK                               ms_rdma_ndk          True
Ethernet                       Microsoft Network Adapter Multiplexor Protocol     ms_implat            False
Ethernet                       Link-Layer Topology Discovery Mapper I/O Driver    ms_lltdio            True
Ethernet                       NDIS Usermode I/O Protocol                         ms_ndisuio           True
Ethernet                       Point to Point Protocol Over Ethernet              ms_pppoe             True
Ethernet                       Link-Layer Topology Discovery Responder            ms_rspndr            True
Ethernet                       Internet Protocol Version 6 (TCP/IPv6)             ms_tcpip6            True
Ethernet                       Hyper-V Extensible Virtual Switch                  vms_pp               False
Ethernet                       WFP Native MAC Layer LightWeight Filter            ms_wfplwf_lower      True
Ethernet                       Client for Microsoft Networks                      ms_msclient          True
Ethernet                       Npcap Packet Driver (NPCAP)                        INSECURE_NPCAP       True
Ethernet                       WINS Client(TCP/IP) Protocol                       ms_netbt             True
Ethernet                       Bridge Driver                                      ms_l2bridge          True
Ethernet                       WFP 802.3 MAC Layer LightWeight Filter             ms_wfplwf_upper      True
Ethernet                       QoS Packet Scheduler                               ms_pacer             True

Para ver las sesiones activas de TCP/IP en una computadora, use el cmdlet Get-NetTCPConnection.

Establecer dirección IP estática en Windows usando PowerShell

Intentemos establecer una dirección IP estática para la NIC. Para cambiar una dirección IP, una máscara de red y una puerta de enlace predeterminada para una interfaz de red Ethernet0, use el comando:

Get-NetAdapter -Name Ethernet0| New-NetIPAddress -IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24 

Puede establecer una dirección IP utilizando una estructura de matriz (más visualmente):

$ipParams = @{
InterfaceIndex = 8
IPAddress = "192.168.2.50"
PrefixLength = 24
AddressFamily = "IPv4"
}
New-NetIPAddress @ipParams

Puede usar New-NetIPAddress para agregar una segunda dirección IP (alias) a un adaptador de red.

Si una dirección IP estática ya está configurada y debe cambiarse, use el cmdlet Set-NetIPAddress:

Set-NetIPAddress -InterfaceAlias Ethernet0 -IPAddress 192.168.2.90

Para deshabilitar la obtención de una dirección IP de DHCP para su adaptador, ejecute el comando:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled

Eliminar dirección IP estática:

Remove-NetIPAddress -IPAddress "xxx.xxx.xxx.xxx"

Establecer direcciones IP del servidor DNS en Windows con PowerShell

Para configurar las direcciones IP del servidor DNS preferido y alternativo en Windows, use el cmdlet Set-DNSClientServerAddress. Por ejemplo:

Set-DNSClientServerAddress -InterfaceIndex 8 -ServerAddresses 192.168.2.11,10.1.2.11

También puede especificar las direcciones IP del servidor de nombres DNS mediante una matriz:

$dnsParams = @{
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8","8.8.4.4")
}
Set-DnsClientServerAddress @dnsParams

Después de cambiar la configuración de DNS, puede vaciar la caché de resolución de DNS (equivalente a

ipconfig /flushdns

):

Clear-DnsClientCache

Mostrar el contenido de la caché de DNS en Windows::

Get-DnsClientCache

Administración de tablas de enrutamiento con PowerShell

El cmdlet Get-NetRoute se usa para mostrar la tabla de enrutamiento.

Obtenga la ruta de puerta de enlace predeterminada para una interfaz de red física en Windows:

Get-NetAdapter -Physical | ? {$_.Status -eq "Up"}| Get-netroute| where DestinationPrefix -eq "0.0.0.0/0"

Para agregar una nueva ruta, use el cmdlet New-NetRoute:

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

Este comando agrega una ruta permanente a la tabla de enrutamiento (similar a

route -p add

). Si desea agregar una ruta temporal, agregue el

-PolicyStore "ActiveStore"

opción. Esta ruta se eliminará después de reiniciar Windows.

Eliminar una ruta de la tabla de enrutamiento:

Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$False

PowerShell: cambie el adaptador de dirección IP estática a DHCP

Para configurar su computadora para obtener una dirección IP dinámica para el adaptador de red del servidor DHCP, ejecute este comando:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled

Borre la configuración del servidor DNS:

Set-DnsClientServerAddress -InterfaceAlias Ethernet0 -ResetServerAddresses

Y reinicie su adaptador de red para obtener automáticamente una dirección IP del servidor DHCP:

Restart-NetAdapter -InterfaceAlias Ethernet0

Si anteriormente tenía configurada una puerta de enlace predeterminada, elimínela:

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

Si necesita restablecer todas las configuraciones de IPv4 para las interfaces de red de la computadora y cambiarlas para obtener una dirección IP dinámica de DHCP, use el siguiente script:

$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
}

Cambie las direcciones DNS e IP de forma remota en varias computadoras con PowerShell

Puede usar PowerShell para cambiar de forma remota la dirección IP o la configuración del servidor DNS en varias computadoras remotas.

Supongamos que su tarea es cambiar la configuración de DNS en todos los hosts de Windows Server en la unidad organizativa (OU) de AD específica. El siguiente script usa el cmdlet Get-ADComputer para obtener la lista de computadoras de Active Directory y luego se conecta a las computadoras remotas a través de WinRM (se usa el cmdlet Invoke-Command):

$Servers = Get-ADComputer -SearchBase ‘OU=Servers,OU=Berlin,OU=DE,DC=a-d,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}
}
}

Artículos relacionados