Подтвердить что ты не робот

Command/Powershell script to reset сетевой адаптер

ОС: Vista Enterprise

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Ответ на Zitrax:

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

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

Ответ 3

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

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

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

Сообщите мне, если это поможет! JFV

Ответ 5

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

netsh interface show interface

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

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

Ответ 6

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

Ответ 7

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

Restart-NetAdapter -Name "Ethernet 2"

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

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

Подробнее см. статью technet.

Ответ 8

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

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

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

Ответ 9

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

введите описание изображения здесь

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

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

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

Get-NetAdapter

Ответ 10

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

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

C:\>wmic nic get name, index 

Отключить сетевую карту (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

Ответ 11

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

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

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

netsh wlan show profiles

Ответ 13

ipconfig/flushdns

ipconfig/renew

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

Ответ 14

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

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

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