我想通过dos将网络接口名称重命名为默认名称,例如“以太网”。
我知道
netsh interface set interface name=”Local Area Connection” newname=”Ethernet”
是这样做的方法。
我正在运行一个脚本,它不知道界面的名称,对吗?因此,在为接口设置 IP 地址之前,我需要将其重命名为默认值。
不知道接口名称怎么办?
有没有办法以某种方式获取接口的名称然后更改它?
(可能已弃用,见底部)
获取所有 WLAN 接口名称:
netsh wlan show interfaces
获取局域网接口名称:
netsh lan show interfaces
获取所有接口的名称:
netsh interface show interface
此批处理脚本将启动服务,获取(最后的)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 将是一个更容易的选择。
这可能在大多数情况下有效:
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 或在控制面板中手动重命名。它现在应该可以工作了。
大约(或至少在)2013 年,该工具开始显示警告:
...微软可能会删除 Netsh 功能 对于...
现在十年过去了,它还在工作。如果您正在编写脚本而不是一次性修复,那么使用 PowerShell 方式可能更谨慎。
你可以用 Powershell 做很多事情,这取决于你的服务器有多新,可以安装。谷歌“Get-WmiObject -Class Win32_NetworkAdapterConfiguration”查看更多信息。