Command/Powershell script to reset a network adapter

柔情痞子 提交于 2019-11-29 23:00:55

You can use WMI from within PowerShell to accomplish this. Assuming there is a network adapter who's device name has Wireless in it, the series of commands might look something like the following:

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

Remember, if you're running this with Window's Vista, you may need to run the PowerShell as Administrator.

Zitrax's answer:

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

was 99% of what I was looking for. The one piece of information that s/he left out, though, was that these commands have to be run as an administrator. Either run cmd.exe as an admin and type them in, or store them in a batch file, and then run that file as admin by right clicking on it and choosing "Run as Administrator" from the context menu.

You can also try this in a .BAT or .CMD file:

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

These commands should do the same things as the 'Diagnose and Repair' for the network adapter, but is WAY faster!

Let me know if this helps! JFV

What worked for me:

netsh interface show interface

to show the interface name which for me was "Ethernet 2" and then:

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

The following command worked for me (on Server 2012 R2):

Restart-NetAdapter -Name "Ethernet 2"

Replace "Ethernet 2" with the name of your adapter.

Note: To create a PS script: create a new document in Notepad, save is as script.PS1, insert the line above and save. Right click the file -> Run with PowerShell.

For more see this technet article.

Mike L

See this article from The Scripting Guys, "How Can I Enable or Disable My Network Adapter?"

tl/dr:

Restart-NetAdapter   -Name "Your Name Here"

You can get the list using

Get-NetAdapter

The post of Scott inspired me to write a very small C# / .Net console application, that uses System.Management. You can name the adapter, that you want to restart, as a command line parameter. The code shows some basics about handling devices, that could be useful for others too.

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);
        }
      }
    }
  }
}

This is what I use on PowerShell version 5.0.10586.122 Windows 10 Home. This needs to be run as an administrator:

Restart-NetAdapter -Name "ethernet"

To run this as an administrator without having to "Turn off UAC" or "R-Click-> Run as administrator": (This is a one time task)

  • Put the above Restart-NetAdapter -Name "ethernet" into a .ps1 file
  • Create a new shortcut (R-Click on .ps1 file > Create Shortcut)
  • On the Shortcut, R-Click > Properties > Shortcut > Target > (Append Powershell.exe to precede the Location/filename as shown below. Also enclose the Location/filename with double quotes("), also shown below.

  • On the Shortcut, R-Click > Properties > Shortcut > Advanced > "Run As Administrator"(Check this Check box)

Now every time you run the shortcut, you will need to just click "Yes" on the UAC screen and it will reset the adapter you've specified in the .ps1 file.

To get the names of the available adapters using PowerShell(WiFi, LAN etc.,):

Get-NetAdapter

You can also use the Microsoft utility devcon.exe.

First, run devcon listclass net to find your Device ID.

Then use this device ID in this command: devcon restart PCI\VEN_16* (using the '*' wildcard to avoid needing to enter the entire ID string).

You can also restart a NIC using wmic command:

Get interface ID:

C:\>wmic nic get name, index 

Disable NIC (InterfaceID:1):

wmic path win32_networkadapter where index=1 call disable

Enable NIC (InterfaceID:1):

wmic path win32_networkadapter where index=1 call enable

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

You could also try netsh commands. Example:

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

You can get a list of those "profiles", using:

netsh wlan show profiles

ipconfig /flushdns

ipconfig /renew

Are the 2 cmdlets I use to refresh my connection. You don't necessarily need to power cycle the router to re-gain a strong signal( I know power cycling clears the router's memory but that's really it).

Thanks for the Info that it can be done with netsh. I wrote a simple "Repair.bat" script:

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

Just call it with the name of the NIC, renamed as i.e. "WLAN" so I does not have spaces, type "Repair WLAN" into cmd does the trick. I'll place it into system32 and make a task of it or see how to integrate it into the network context menu...

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!