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 NetTCPIPEste 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-NetAdapterEl 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,MacAddressWindows puede tener algunos adaptadores de red ocultos. Para mostrarlos todos, agregue el parámetro IncludeHidden:
Get-NetAdapter -IncludeHiddenEl 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 Ethernet0o :
Get-NetAdapter -InterfaceIndex 8Puede cambiar el nombre del adaptador:
Rename-NetAdapter -Name Ethernet0 -NewName LANPara deshabilitar una interfaz de red, use este comando:
Get-NetAdapter -Name Ethernet0| Disable-NetAdapterHabilite la NIC por su nombre:
Enable-NetAdapter -Name Ethernet0Si el adaptador de red tiene un número de VLAN configurado, puede verlo:
Get-NetAdapter | ft Name, Status, Linkspeed, VlanIDAsí 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-NetAdapterHardwareInfoDeshabilite el protocolo IPv6 para la interfaz de red:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6Deshabilite 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 Ethernet0Para mostrar información más detallada sobre la configuración de la interfaz de red TCP/IP, use el comando
Get-NetIPConfiguration -InterfaceAlias Ethernet0 -DetailedEn 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).IPv4AddressDevuelve el valor de la dirección IP de la interfaz solamente:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4AddressAl 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 DisabledMuestre una lista de los protocolos de red que se pueden habilitar o deshabilitar para un adaptador de red:
Get-NetAdapterBinding -Name ethernet0 -IncludeHidden -AllBindingsName 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 @ipParamsPuede 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.90Para deshabilitar la obtención de una dirección IP de DHCP para su adaptador, ejecute el comando:
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp DisabledEliminar 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.11Tambié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 @dnsParamsDespués de cambiar la configuración de DNS, puede vaciar la caché de resolución de DNS (equivalente a
ipconfig /flushdns):
Clear-DnsClientCacheMostrar el contenido de la caché de DNS en Windows::
Get-DnsClientCacheAdministració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 8Este 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:$FalsePowerShell: 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 EnabledBorre la configuración del servidor DNS:
Set-DnsClientServerAddress -InterfaceAlias Ethernet0 -ResetServerAddressesY reinicie su adaptador de red para obtener automáticamente una dirección IP del servidor DHCP:
Restart-NetAdapter -InterfaceAlias Ethernet0Si anteriormente tenía configurada una puerta de enlace predeterminada, elimínela:
Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$falseSi 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}
}
}








