2008-10-16 40 views
21

SO: Vista Enterprisecomando script/Powershell para restablecer un adaptador de red

Cuando cambio de red de mi casa y la oficina, que siempre se enfrentan a problemas con conectarse a la red. Casi siempre tengo que usar el servicio de diagnóstico en 'Red y centro de intercambio' y el problema se resuelve cuando uso la opción Restablecer adaptador de red.

Esto lleva mucho tiempo (3-4 min) y entonces estaba tratando de encontrar un comando o un script/cmdlet powershell que puedo usar directamente para restablecer el adaptador de red y guardarme estos 5 minutos cada vez tengo que cambiar entre las redes. ¿Alguna sugerencia?

+0

Cuando creó su solución, ¿también encontró una forma de verificar si el problema existía antes de restablecer el adaptador? http://stackoverflow.com/questions/38737616/test-if-wireless-adapter-is-working-before-resetting – JohnLBevan

Respuesta

19

Puede usar WMI desde dentro de PowerShell para lograr esto. Suponiendo que hay un adaptador de red cuyo nombre dispositivo tiene inalámbrica en ella, la serie de comandos podría ser algo como lo siguiente:

$adaptor = Get-WmiObject -Class Win32_NetworkAdapter | Where-Object {$_.Name -like "*Wireless*"} 
$adaptor.Disable() 
$adaptor.Enable() 

Recuerde, si usted está funcionando esto con Vista de Windows, es posible que necesite ejecute el PowerShell como administrador.

+0

He probado esto en Windows 7, funciona y también tiene que ejecutarse como administrador. De lo contrario, obtendrás ReturnValue: 5. – Wouter

+0

¿Sabes si hay una forma de ver si el adaptador está en un estado defectuoso antes de restablecerlo, o el sistema no estaría al tanto? Gracias por adelantado. http://stackoverflow.com/questions/38737616/test-if-wireless-adapter-is-working-before-resetting – JohnLBevan

5

También puede probar esto en un archivo .bat o .cmd:

ipconfig /release 
ipconfig /renew 
arp -d * 
nbtstat -R 
nbtstat -RR 
ipconfig /flushdns 
ipconfig /registerdns 

Estos comandos deben hacer las mismas cosas que el 'Diagnosticar y Reparar 'para el adaptador de red, pero es MUCHO MÁS rápido!

¡Avíseme si esto es útil! JFV

+0

O en un archivo .ps1, ya que todos son simples .exe :) –

+1

Hola JFV ... ¡gracias por tu ayuda! Los comandos mencionados por usted no 'restablecieron el adaptador de red'. Sin embargo, parecen hacer lo mismo que la opción "Obtener nueva configuración de IP automáticamente" para diagnosticar y reparar. – Mohit

1

También puede usar la utilidad de Microsoft devcon.exe.

Primero, ejecute devcon listclass net para encontrar su ID de dispositivo.

Luego use este ID de dispositivo en este comando: devcon restart PCI\VEN_16* (usando el comodín '*' para evitar la necesidad de ingresar la cadena de ID completa).

3

La publicación de Scott me inspiró a escribir una aplicación de consola C#/.Net muy pequeña, que utiliza System.Management. Puede nombrar el adaptador, que desea reiniciar, como un parámetro de línea de comando. El código muestra algunos conceptos básicos sobre el manejo de dispositivos, que también podrían ser útiles para otros.

using System; 
using System.Management; 

namespace ResetNetworkAdapter 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     if (args.Length != 1) 
     { 
     Console.WriteLine("ResetNetworkAdapter [adapter name]"); 
     Console.WriteLine("disables and re-enables (restarts) network adapters containing [adapter name] in their name"); 
     return; 
     } 

     // commandline parameter is a string to be contained in the searched network adapter name 
     string AdapterNameLike = args[0]; 

     // get network adapter node 
     SelectQuery query = new SelectQuery("Win32_NetworkAdapter"); 
     ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); 
     ManagementObjectCollection adapters = searcher.Get(); 

     // enumerate all network adapters 
     foreach (ManagementObject adapter in adapters) 
     { 
     // find the matching adapter 
     string Name = (string)adapter.Properties["Name"].Value; 
     if (Name.ToLower().Contains(AdapterNameLike.ToLower())) 
     { 
      // disable and re-enable the adapter 
      adapter.InvokeMethod("Disable", null); 
      adapter.InvokeMethod("Enable", null); 
     } 
     } 
    } 
    } 
} 
0

También podría probar netsh comandos. Ejemplo:

netsh wlan disconnect && netsh wlan connect [ONE OF YOUR WLAN PROFILES] 

Usted puede obtener una lista de los "perfiles", usando:

netsh wlan show profiles 
+0

En la situación descrita en la pregunta, desconectar + conectar no será suficiente. Se necesita habilitar o deshabilitar. –

0

Utilice este enlace .. Ayuda a restablecer los adaptadores de red con bastante facilidad.

http://www.geeksinphoenix.com/blog/post/2010/12/03/Resetting-your-network-adapter-in-Windows-7.aspx

Gracias, aj

+0

Tenga en cuenta que se desaconsejan las respuestas de solo enlace, las respuestas SO deberían ser el punto final de una búsqueda de una solución (frente a otra escala más de referencias, que tienden a quedar obsoletas en el tiempo). Considere agregar una sinopsis independiente aquí, manteniendo el enlace como referencia. – kleopatra

4

Lo que funcionó para mí:

netsh interface show interface 

para mostrar el nombre de la interfaz que para mí era "Ethernet 2" y luego:

netsh interface set interface "Ethernet 2" DISABLED 
netsh interface set interface "Ethernet 2" ENABLED 
0

ipconfig/flushdns

ipconfig/renew

Son los 2 cmdlets que utilizo para actualizar mi conexión. No es necesario encender y apagar el enrutador para volver a obtener una señal fuerte (sé que el ciclo de encendido borra la memoria del enrutador, pero eso es realmente).

+2

Bienvenido a SO. ¡Tal vez pueda mejorar su respuesta al especificar cómo los usa y por qué solucionan el problema! –

9

de Zitrax respuesta:

netsh interface set interface "InterfaceName" DISABLED 
netsh interface set interface "InterfaceName" ENABLED 

fue del 99% de lo que estaba buscando. Sin embargo, la única información que dejó de lado es que estos comandos deben ejecutarse como administradores. Ejecute cmd.exe como administrador y escríbalo o almacénelo en un archivo por lotes y luego ejecútelo como administrador haciendo clic derecho sobre él y seleccionando "Ejecutar como administrador" en el menú contextual.

+3

Para obtener el nombre de la interfaz, use: "netsh interface show interface" que le proporciona la lista. Probablemente va a ser "Conexión de red inalámbrica" ​​para ahorrar algo de tiempo :) – Sogger

1

Esto es lo que uso en PowerShell versión 5.0.10586.122 Windows 10 Home. Esto se debe ejecutar como administrador:

Restart-NetAdapter -Name "ethernet"

Para ejecutar esto como un administrador sin tener que "Desactivar UAC" o "R-Click -> Ejecutar como administrador": (Esta es una tarea una vez)

  • Poner lo anterior Restart-NetAdapter -Name "ethernet" en un archivo .ps1
  • Crear un nuevo acceso directo (R-Click en .ps1 archivo> Creat e Acceso directo)
  • En el acceso directo, R-Click> Propiedades> Acceso directo> Destino> (Adjunte Powershell.exe para preceder a la Ubicación/nombre de archivo como se muestra a continuación. también encerrar la ubicación/nombre de archivo con comillas ("), que también se muestra a continuación.

enter image description here

  • en el acceso directo, R-Click> Propiedades> Acceso directo> Avanzado>" Ejecutar como administrador "(Marque esta casilla de verificación)

Ahora, cada vez que se ejecuta el acceso directo, usted tendrá que simplemente haga clic en 'Sí' en la pantalla UAC y se restablecerá el adaptador que ha especificado en el .ps1 archivo.

Para obtener los nombres de los adaptadores disponibles mediante PowerShell (WiFi, LAN, etc.),):

Get-NetAdapter

1

También puede reiniciar una tarjeta de red con el comando wmic:

obtener la interfaz ID:

C:\>wmic nic get name, index 

Desactivar NIC (interfaz de ID: 1):

wmic path win32_networkadapter where index=1 call disable 

Habilitar NIC (InterfaceID: 1):

wmic path win32_networkadapter where index=1 call enable 

Fuente: http://www.sysadmit.com/2016/04/windows-reiniciar-red.html

0

Gracias por la informacion que se puede hacer con netsh. me escribió un simple script "Repair.bat":

@echo off 
netsh interface set interface "%1" DISABLED 
netsh interface set interface "%1" ENABLED 

Sólo tiene que llamar con el nombre de la NIC, es decir, rebautizado como "WLAN", así que no tiene espacios, tipo "WLAN Reparación" en cmd hace el truco. lo pondré en system32 y hacer una tarea de ella o ver la forma de integrarlo en el menú contextual de la red ...

2

El siguiente comando trabajó para mí (en Server 2012 R2):

Restart-NetAdapter -Name "Ethernet 2" 

Reemplace "Ethernet 2" con el nombre de su adaptador.

Nota: Para crear una secuencia de comandos PS: cree un documento nuevo en el Bloc de notas, guarde como script.PS1, inserte la línea anterior y guárdela. Haga clic derecho en el archivo -> Ejecutar con PowerShell.

Para obtener más información, consulte este artículo technet.

Cuestiones relacionadas