通过命令行重命名网络接口名称[关闭]

问题描述 投票:0回答:2

我想通过dos将网络接口名称重命名为默认名称,例如“以太网”。

我知道

netsh interface set interface name=”Local Area Connection” newname=”Ethernet”
是这样做的方法。

我正在运行一个脚本,它不知道界面的名称,对吗?因此,在为接口设置 IP 地址之前,我需要将其重命名为默认值。

不知道接口名称怎么办?

有没有办法以某种方式获取接口的名称然后更改它?

windows networking cmd ethernet netsh
2个回答
6
投票

netsh

(可能已弃用,见底部)

获取所有 WLAN 接口名称:

netsh wlan show interfaces

“显示接口 - 显示系统上的无线 LAN 接口列表。”

获取局域网接口名称:

netsh lan show interfaces

“显示接口 - 显示系统上当前有线接口的列表。”

获取所有接口的名称:

netsh interface show interface

"show interfaces - 显示界面。"
需要“有线自动配置服务”,通常不会启动。

此批处理脚本将启动服务,获取(最后的)LAN 接口名称,将其更改为新名称,再次停止 Wired AutoConfig 服务。

sc.exe start dot3svc

for /f "tokens=1* delims=: " %%a in ('netsh lan show interfaces') do if %%a == Name set activeAdapter=%%b
echo %activeAdapter%
netsh interface set interface name="%activeAdapter%" newname="Ethernet"

sc.exe stop dot3svc

上述脚本的局限性:

  • 假设只有一个有线接口
  • 它会停止有线自动配置服务,无论它是否在启动时运行

对于 Wifi 接口,将上面的脚本 'lan' 更改为 'wlan' 并删除两个 sc.exe 服务启动/停止


PowerShell

为了更好地控制什么接口重命名 PowerShell 将是一个更容易的选择。

这可能在大多数情况下有效:

Get-NetAdapter | Where-Object { $_.HardwareInterface -eq $True -and $_.MediaType -eq "802.3" } | Rename-NetAdapter -NewName "Ethernet"

HardwareInterface
将消除虚拟接口,例如虚拟机
MediaType
802.3
只会显示“有线”接口,而不显示 Wifi、宽带或其他接口。

在脚本文件中,使用上述版本的命令,简写版本为:

Get-NetAdapter | ? HardwareInterface | ? MediaType -eq "802.3" | Rename-NetAdapter "Ethernet"

有更多选项如何选择所需的界面。检查可以选择的所有参数:

(Get-NetAdapter)[0] | Format-List -Property * -Force

例如
列出所有由 Realtek 制造的(Realtek 供应商 10ec,英特尔:8086):

Get-NetAdapter | ? ComponentID -like "PCI\VEN_10EC*"

不是虚拟的:

Get-NetAdapter | ? Virtual -eq $false

连接器存在:

Get-NetAdapter | ? ConnectorPresent

然后就是WMI对象

Get-WmiObject -Class Win32_NetworkAdapterConfiguration


注册表

有时使用 netsh 或 PS 重命名界面不起作用,唯一的方法是编辑注册表。
例如如果您更改了网络适配卡并且新的使用名称:Ethernet 2 或类似名称并且您想将其重命名回“Ethernet”。
这是因为旧界面仍在注册表中,但这些工具不可见。

在这种情况下,使用 netsh 重命名界面将显示这个奇怪的荒谬错误:

“您未连接,因为名称重复 网络。如果加入域,请转到控制面板中的系统进行更改 计算机名称,然后重试。如果加入工作组,请选择 另一个工作组名称。”

使用 PowerShell 会显示更合适的错误:

试图创建一个对象,但对象名称已经存在。

Control Panel\Network and Internet\Network Connections
并尝试重命名那里的界面也不起作用。

在这种情况下,似乎唯一的方法是在这些注册表路径中找到与旧的、已删除的接口对应的 Key

HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NetworkDriverBackup\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}\
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Upgrade\NetworkDriverBackup\Control\NetworkSetup2\Interfaces\

删除旧界面的密钥(不是上面写的整个路径!),
重启,
然后使用 netsh、PowerShell 或在控制面板中手动重命名。它现在应该可以工作了。


netsh 被弃用了吗?

大约(或至少在)2013 年,该工具开始显示警告

...微软可能会删除 Netsh 功能 对于...

现在十年过去了,它还在工作。如果您正在编写脚本而不是一次性修复,那么使用 PowerShell 方式可能更谨慎。


0
投票

你可以用 Powershell 做很多事情,这取决于你的服务器有多新,可以安装。谷歌“Get-WmiObject -Class Win32_NetworkAdapterConfiguration”查看更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.