【问题标题】:Command/Powershell script to reset a network adapter用于重置网络适配器的命令/Powershell 脚本
【发布时间】:2008-10-16 03:00:39
【问题描述】:

操作系统:Vista 企业版

当我在我的家庭网络和办公室网络之间切换时,我总是遇到连接到网络的问题。几乎总是我必须使用“网络和共享中心”中的诊断服务,当我使用重置网络适配器选项时问题得到解决。

这需要很多时间(3-4 分钟),所以我试图找到一个命令或一个 powershell 脚本/cmdlet,我可以直接使用它来重置网络适配器,每次我都可以节省这 5 分钟必须在网络之间切换。有什么指点吗?

【问题讨论】:

标签: powershell networking windows-vista


【解决方案1】:

您可以在 PowerShell 中使用 WMI 来完成此操作。假设有一个设备名称中包含 Wireless 的网络适配器,这一系列命令可能如下所示:

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

请记住,如果您使用 Window 的 Vista 运行它,您可能需要以管理员身份运行 PowerShell

【讨论】:

  • 我已经在 Windows 7 中测试过,它可以工作,并且还必须以管理员身份运行。否则你会得到 ReturnValue : 5.
  • 您知道是否有办法在重置之前查看适配器是否处于故障状态,或者系统会不会察觉?提前致谢。 stackoverflow.com/questions/38737616/…
【解决方案2】:

Zitrax 的回答:

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

是我所寻找的 99%。但是,她/他遗漏的一条信息是这些命令必须以管理员身份运行。以管理员身份运行 cmd.exe 并键入它们,或者将它们存储在批处理文件中,然后通过右键单击该文件并从上下文菜单中选择“以管理员身份运行”以管理员身份运行该文件。

【讨论】:

  • 要获取接口的名称,请使用:“netsh interface show interface”,它会为您提供列表。它可能会是“无线网络连接”来节省你一些时间:)
【解决方案3】:

请参阅来自 The Scripting Guys 的这篇文章,"How Can I Enable or Disable My Network Adapter?"

tl/博士:

Restart-NetAdapter   -Name "Your Name Here"

您可以使用获取列表

Get-NetAdapter

【讨论】:

  • 那篇文章现在已经消失了...这就是为什么最好用文章摘录而不是链接来回答问题...
  • @DavidKemp 公平点。幸运的是,我为那篇文章找到了新家。
【解决方案4】:

您也可以在 .BAT 或 .CMD 文件中尝试此操作:

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

这些命令应该与网络适配器的“诊断和修复”执行相同的操作,但速度要快得多!

如果这有帮助,请告诉我! 捷豹路虎

【讨论】:

  • 或者在 .ps1 文件中,因为它们都是简单的 .exe 文件 :)
  • 您好 JFV...感谢您的帮助!您提到的命令没有“重置网络适配器”。但是,它们似乎与诊断和修复的“自动获取新 IP 设置”选项相同。
【解决方案5】:

什么对我有用:

netsh interface show interface

显示对我来说是“以太网 2”的接口名称,然后:

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

【讨论】:

    【解决方案6】:

    以下命令对我有用(在 Server 2012 R2 上):

    Restart-NetAdapter -Name "Ethernet 2"
    

    将“Ethernet 2”替换为您的适配器的名称。

    注意:创建PS脚本:在记事本中新建一个文档,保存为script.PS1,在上面插入一行并保存。右键单击该文件 -> 使用 PowerShell 运行。

    欲了解更多信息,请参阅这篇technet 文章。

    【讨论】:

      【解决方案7】:

      Scott 的帖子启发我编写了一个非常小的 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);
              }
            }
          }
        }
      }
      

      【讨论】:

        【解决方案8】:

        这是我在 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

        【讨论】:

        • 当您收到消息“...无法加载,因为在此系统上禁用了正在运行的脚本。”在 Powershell.exe 之后添加 -ExecutionPolicy ByPass。在此处找到解决方案:stackoverflow.com/a/9167524
        【解决方案9】:

        您还可以使用 Microsoft 实用程序 devcon.exe

        首先,运行 devcon listclass net 以查找您的设备 ID。

        然后在此命令中使用此设备 ID:devcon restart PCI\VEN_16*(使用 '*' 通配符以避免需要输入整个 ID 字符串)。

        【讨论】:

          【解决方案10】:

          你也可以使用 wmic 命令重启网卡:

          获取接口ID:

          C:\>wmic nic get name, index 
          

          禁用 NIC (InterfaceID:1):

          wmic path win32_networkadapter where index=1 call disable
          

          启用 NIC(接口 ID: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
            

            【讨论】:

            • 在问题描述的情况下,disconnect+connect 是不够的。需要禁用+启用。
            【解决方案12】:

            ipconfig /flushdns

            ipconfig /更新

            是我用来刷新连接的 2 个 cmdlet。您不一定需要重启路由器才能重新获得强信号(我知道重启路由器会清除路由器的内存,但事实就是这样)。

            【讨论】:

            • 欢迎来到 SO。也许您可以通过指定如何使用它们以及它们解决问题的原因来使您的答案变得更好!
            【解决方案13】:

            感谢您提供可以使用 netsh 完成的信息。 我写了一个简单的“Repair.bat”脚本:

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

            只需使用 NIC 的名称调用它,重命名为“WLAN”,这样我就没有空格,在 cmd 中键入“Repair WLAN”就可以了。 我将把它放到 system32 中并完成它的任务,或者看看如何将它集成到网络上下文菜单中......

            【讨论】:

              猜你喜欢
              • 2015-12-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-07-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多