在脚本中更改 NIC 速度/双工设置?

在脚本中更改 NIC 速度/双工设置?

我有一台运行 Windows Server 2003 SP2 的笔记本电脑,其中安装了 PowerShell。

有时,该系统必须在需要手动将 NIC 设置为 100 Mbps/全双工才能正常运行的环境中使用。在大多数其他环境中,需要将其设置为自动检测以获得最佳性能。

通常,我通过以下步骤执行此操作:

  • 右键单击“网上邻居”,选择“属性”。
  • 右键单击本地连接,选择属性
  • 单击“配置”
  • 在“高级”选项卡上,选择“速度和双工”属性,然后将值从“自动”更改为“100 Mb 全双工”。
  • 工作完成后撤销更改。

有没有办法通过批处理或 PowerShell 脚本执行此操作?我正在寻找类似这样的事情:

@ECHO OFF
[Insert 100 Mbps/Full Duplex commands here]
ECHO NIC set to 100 Mbps/Full Duplex
ECHO Press any key to return to Auto-Detect
PAUSE
[Insert Auto-Detect commands here]
ECHO NIC returned to Auto-Detect
ECHO Press any key to exit
PAUSE

有人告诉我可能有一些方法可以通过 WMIC 或 PowerShell 来执行此操作,但我无法找到适当的开关、值或语法。

答案1

正如 technet 线程中所述,这似乎是特定于供应商的设置这里

它指出,对 HKLM\SYSTEM\CurrentControlSet\Control\Class\(GUID)\(INTNUM)\(Vendor-specific-registrykey) 下的 NIC 密钥进行注册表更改就足够了,但我认为您还应该在其中添加一些内容以在更改它时禁用然后重新启用 NIC。

这是一个批处理脚本示例,它将以上所有内容与问题中的模板结合在一起。

@echo off  
reg add HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001 /v RequestedMediaType /d 6 /t REG_SZ /f  
netsh interface set interface "Local Area Connection" DISABLED  
netsh interface set interface "Local Area Connection" ENABLED  
echo Connection set to 100 Mb/Full Duplex  
echo Press any key to change back to Auto  
PAUSE  
reg add HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0001 /v RequestedMediaType /d 0 /t REG_SZ /f  
netsh interface set interface "Local Area Connection" DISABLED  
netsh interface set interface "Local Area Connection" ENABLED  
echo Connection set to Auto  
echo Press any key to exit  
PAUSE  

为了使上述脚本适合您,可能需要更改以下内容。

  • 注册表项中后面的所有内容"\Class\"可能需要进行更改,以匹配系统中的相应项。查找以 开头的项{4D36E972,然后从那里开始查找所需的项。
  • /v/d和开关的参数/t应设置为与系统的供应商特定配置相匹配。
  • 如果必要的话请进行更改"Local Area Connection",以匹配您正在处理的接口的名称。

与往常一样,在尝试任何未经测试的更改之前,请务必对注册表进行完整备份。    

相关内容