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

Isz*_*szi 3 windows script powershell batch

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

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

通常,我通过以下程序执行此操作:

  • 右键单击网上邻居,选择属性。
  • 右键单击本地连接,选择属性
  • 单击配置
  • 在 Advanced 选项卡上,选择 Speed & Duplex 属性并将值从 Auto 更改为 100 Mb Full。
  • 完成工作后撤消更改。

有没有办法通过 Batch 或 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 执行此操作,但我一直无法找到正确的开关、值或语法。

Hyp*_*ppy 5

看起来这是一个供应商特定的设置,如在的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  
Run Code Online (Sandbox Code Playgroud)

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

  • "\Class\"注册表项之后的所有内容可能需要更改以匹配系统中的相应项。寻找一把钥匙{4D36E972,从那里开始寻找你需要的钥匙。
  • 为参数/v/d以及/t开关应该设置为匹配您的系统供应商特定的配置。
  • "Local Area Connection"如有必要,进行更改,以匹配您正在处理的接口的名称。

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