由于网络设备发生变化,我可能需要将一堆机器 NIC 设置回自动协商。自动化的最佳方法是什么?我在想通过组策略或 SCCM 推出的 Autoit 编译的 exe。如果您有示例,请发布您的脚本。我不确定我要访问的所有系统都将具有相同的 NIC,因此将所有已知卡重置为自动的东西会很棒。
谢谢!-马修
由于网络设备发生变化,我可能需要将一堆机器 NIC 设置回自动协商。自动化的最佳方法是什么?我在想通过组策略或 SCCM 推出的 Autoit 编译的 exe。如果您有示例,请发布您的脚本。我不确定我要访问的所有系统都将具有相同的 NIC,因此将所有已知卡重置为自动的东西会很棒。
谢谢!-马修
这是一个脚本来做你正在寻找的东西。但是,您需要做一些“功课”才能使其正常工作:
您需要为您要更改的每种 NIC 找到“DriverDesc”值。(查看注册表中每个子项的 REG_DEVICE_PATH 下的注册表,以找到各种 DriverDesc 值)。我在脚本中包含了 Broadcom 57xx 控制器的说明。您需要确定每种 NIC 的注册表值名称和值设置,然后为每种 NIC 添加类似于第 11-15 行的条目。
这现在针对本地计算机运行。让它在命令行上使用计算机名称并针对远程计算机运行并不难。或者,您可以在每台机器上本地运行它。
脚本运行后,您需要重新启动计算机才能使更改生效。如果您在 Windows Vista 或 Windows 7 上运行它,请注意它必须在“提升”上下文中运行。(它是在 Windows 7 上开发的,在 Windows XP 上运行良好......)
那应该可以解决您的问题。
我已经有一段时间没有做过这样的事情了,但我相信改变它的方法会因每个 NIC 卡而异,并且可能会因 NIC 驱动程序的每个版本而异。
IMO 处理它的最佳方法是在注册表中进行更改。如果您拥有的 PC 型号少于十几种,那么它可能并不难,否则,哎呀。
最好的选择可能是 WMI 脚本。
这是一个让您入门的示例,它读取网卡信息。为远程计算机设置它们很容易 - 将 computername 变量更改为数组,遍历它们,然后调用 set 方法而不是 get。
已经有一些关于 serverfault 的 WMI 脚本示例。
我将在这里逆流而上,建议您手动进行更改。将新设备预配置为与旧设备相同的 fubar 设置(100/full 或其他),然后一次通过并重置网络设备和计算机。这是一项非常令人讨厌的工作,但最好确保一切顺利,并且您只需要做一次。
犯错是人之常情,真正把事情搞砸需要一个脚本。