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

ОС: Vista Enterprise

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

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

13 ответов

Решение

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

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

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

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

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

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

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

ТЛ / дг:

Restart-NetAdapter   -Name "Your Name Here"

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

Get-NetAdapter

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

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

Эти команды должны выполнять те же действия, что и "Диагностика и восстановление" для сетевого адаптера, но НАМНОГО быстрее!

Позвольте мне знать, если это помогает! JFV

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

netsh interface show interface

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

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

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

Restart-NetAdapter -Name "Ethernet 2"

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

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

Для получения дополнительной информации см. Эту статью Technet.

Это то, что я использую в 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, чтобы предшествовать расположению / имени файла, как показано ниже. Также заключите местоположение / имя файла в двойные кавычки ("), также показанные ниже.

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

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

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

Get-NetAdapter

Пост Скотта вдохновил меня на написание очень маленького консольного приложения на 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);
        }
      }
    }
  }
}

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

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

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

Вы также можете перезапустить 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

Вы также можете попробовать netsh команды. Пример:

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

Вы можете получить список этих "профилей", используя:

netsh wlan show profiles

ipconfig / flushdns

ipconfig / renew

Являются ли 2 командлета, которые я использую, чтобы обновить свое соединение. Вам не обязательно включать и выключать питание маршрутизатора, чтобы получить сильный сигнал (я знаю, что отключение питания очищает память маршрутизатора, но это действительно так).

Спасибо за информацию, что это можно сделать с помощью netsh. Я написал простой скрипт "Repair.bat":

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

Просто назовите его с именем сетевого адаптера, переименованного как, например, "WLAN", чтобы у меня не было пробелов, введите "Repair WLAN" в cmd. Я помещу это в system32 и сделаю задачу или посмотрю, как интегрировать это в контекстное меню сети...

Другие вопросы по тегам