Командный / Powershell скрипт для сброса сетевого адаптера - PullRequest
25 голосов
/ 16 октября 2008

ОС: Vista Enterprise

Когда я переключаюсь между домашней и офисной сетью, у меня всегда возникают проблемы с подключением к сети. Почти всегда мне приходится использовать диагностическую службу в «Центре управления сетями и общим доступом», и проблема решается, когда я использую опцию сброса сетевого адаптера.

Это занимает много времени (3-4 минуты), и поэтому я пытался найти либо команду, либо сценарий / командлет PowerShell, которые я мог бы использовать напрямую для сброса сетевого адаптера и сохранения этих 5 минут каждый раз приходится переключаться между сетями. Есть указатели?

Ответы [ 13 ]

24 голосов
/ 16 октября 2008

Для этого вы можете использовать WMI из PowerShell. Предполагая, что есть сетевой адаптер, имя устройства которого содержит Wireless , последовательность команд может выглядеть примерно так:

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

Помните, что если вы работаете с Windows Vista, вам может потребоваться запустить PowerShell от имени администратора .

10 голосов
/ 30 ноября 2014

Цитракс ответ:

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

было 99% того, что я искал. Однако он упустил одну информацию: эти команды должны выполняться от имени администратора. Либо запустите cmd.exe от имени администратора и введите их, либо сохраните в виде пакетного файла, а затем запустите этот файл от имени администратора, щелкнув его правой кнопкой мыши и выбрав «Запуск от имени администратора» в контекстном меню.

7 голосов
/ 16 октября 2008

Вы также можете попробовать это в файле .BAT или .CMD:

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

Эти команды должны выполнять те же действия, что и «Диагностика и восстановление» для сетевого адаптера, но ПУТЬ быстрее!

Дайте мне знать, если это поможет! JFV

6 голосов
/ 05 марта 2014

Что сработало для меня:

netsh interface show interface

, чтобы показать имя интерфейса, которое для меня было "Ethernet 2", а затем:

netsh interface set interface "Ethernet 2" DISABLED
netsh interface set interface "Ethernet 2" ENABLED
5 голосов
/ 07 сентября 2016

У меня работала следующая команда (на Server 2012 R2):

Restart-NetAdapter -Name "Ethernet 2"

Замените «Ethernet 2» на имя вашего адаптера.

Примечание. Чтобы создать сценарий PS: создайте новый документ в блокноте, сохраните как script.PS1, вставьте строку выше и сохраните. Щелкните правой кнопкой мыши файл -> Запустить с PowerShell.

Подробнее см. В этой статье technet .

5 голосов
/ 16 октября 2008

См. Эту статью от сценаристов, «Как включить или отключить сетевой адаптер?»

ТЛ / др:

Restart-NetAdapter   -Name "Your Name Here"

Вы можете получить список, используя

Get-NetAdapter
3 голосов
/ 19 марта 2016

Это то, что я использую в PowerShell версии 5.0.10586.122 Windows 10 Home. Это должно быть запущено от имени администратора:

Restart-NetAdapter -Name "ethernet"

Чтобы запустить это как администратор без необходимости «Отключать UAC» или « R-Click -> Запуск от имени администратора»: (это одноразовая задача)

  • Поместите выше Restart-NetAdapter -Name "ethernet" в .ps1 файл
  • Создание нового ярлыка ( R-Click в файле .ps1> Создать ярлык)
  • На ярлыке, R-Click > Свойства> Ярлык> Цель> (Добавьте Powershell.exe к имени местоположения / имени файла, как показано ниже. Также заключите Местоположение / имя файла в двойные кавычки ("), также показанные ниже.

enter image description here

  • В ярлыке R-Click > Свойства> Ярлык> Дополнительно> «Запуск от имени администратора» (установите этот флажок)

Теперь каждый раз, когда вы запускаете ярлык, вам нужно просто нажимать «Да» на экране UAC, и он сбрасывает адаптер, указанный в файле .ps1.

Чтобы получить имена доступных адаптеров с помощью PowerShell (WiFi, LAN и т. Д.):

Get-NetAdapter

3 голосов
/ 30 марта 2011

Пост Скотта вдохновил меня на написание очень маленького консольного приложения на C # / .Net, использующего System.Management. Вы можете назвать адаптер, который вы хотите перезагрузить, в качестве параметра командной строки. Код демонстрирует некоторые основы работы с устройствами, которые могут быть полезны и для других.

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);
        }
      }
    }
  }
}
1 голос
/ 19 апреля 2016

Вы также можете перезапустить NIC с помощью команды wmic:

Получить идентификатор интерфейса:

C:\>wmic nic get name, index 

Отключить NIC (InterfaceID: 1):

wmic path win32_networkadapter where index=1 call disable

Включить NIC (InterfaceID: 1):

wmic path win32_networkadapter where index=1 call enable

Источник: http://www.sysadmit.com/2016/04/windows-reiniciar-red.html

1 голос
/ 07 марта 2010

Вы также можете использовать утилиту Microsoft devcon.exe .

Сначала запустите devcon listclass net, чтобы найти идентификатор вашего устройства.

Затем используйте этот идентификатор устройства в этой команде: devcon restart PCI\VEN_16* (используйте подстановочный знак '*', чтобы избежать необходимости вводить всю строку идентификатора).

...