Командный /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 и сделаю задачу или посмотрю, как интегрировать это в контекстное меню сети...