由于networking设备的变化,我可能需要设置一堆机器网卡来自动协商。 什么是自动化这个最好的方法? 我正在考虑通过组策略或SCCM推出的Autoit编译的exe。 如果您有示例,请发布您的脚本。 我不确定所有我打的系统将有相同的网卡,所以将所有已知的卡重新设置为自动将是很好的。
谢谢! -Mathew
这是一个脚本来做你想要的。 但是,你需要做一些“功课”才能使其工作:
Option Explicit Const HIVE_HKLM = &H80000002 Const REG_DEVICE_PATH = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}" Const DEBUGGING = 1 Dim objRegistry, arrSubkeys, strSubkey, strComputer, regexpSubkey, strValue, dictDriverChanges, strDriverName Set dictDriverChanges = CreateObject("Scripting.Dictionary") ' For each given NIC, add an item for the driver description string (case insensitive match) and the value name and value that ' should be set in the NIC's properties Set dictDriverChanges.Item("Broadcom NetXtreme 57xx Gigabit Controller") = CreateObject("Scripting.Dictionary") dictDriverChanges.Item("Broadcom NetXtreme 57xx Gigabit Controller").Add "ValueName", "*SpeedDuplex" dictDriverChanges.Item("Broadcom NetXtreme 57xx Gigabit Controller").Add "Value", "0" ' Pattern to match on subkeys - exactly 4 digits Set regexpSubkey = new Regexp regexpSubkey.Global = True regexpSubkey.Pattern = "\d{4,4}" ' Comptuer to run against. Set to "." for the local computer, or specify the computer-name of a remote machine strComputer = "." Set objRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") objRegistry.EnumKey HIVE_HKLM, REG_DEVICE_PATH, arrSubkeys ' Did we get back any strSubkeys? If IsArray(arrSubkeys) Then For Each strSubkey In arrSubkeys ' Is this a subkey we want to look at If regexpSubkey.Execute(strSubkey).Count = 1 Then objRegistry.GetStringValue HIVE_HKLM, REG_DEVICE_PATH & "\" & strSubkey, "DriverDesc", strValue ' Loop through all the drivers we know about looking for this driver For Each strDriverName in dictDriverChanges If UCase(strDriverName) = UCase(strValue) Then If DEBUGGING = 1 Then WScript.Echo "Located driver " & strValue & ". Setting value " & dictDriverChanges.Item(strDriverName).Item("ValueName") & " to " & dictDriverChanges.Item(strDriverName).Item("Value") objRegistry.SetStringValue HIVE_HKLM, REG_DEVICE_PATH & "\" & strSubkey, dictDriverChanges.Item(strDriverName).Item("ValueName"), dictDriverChanges.Item(strDriverName).Item("Value") End If Next ' strDriverName End If Next ' strSubkey End If
您将需要find您要更改的每种NIC的“DriverDesc”值。 (查找REG_DEVICE_PATH下的每个子键的registry以查找各种DriverDesc值)。 我在脚本中包含了Broadcom 57xx控制器的说明。 您将需要识别每种NIC的registry值名称和值设置,然后为每种NIC添加第11-15行中的条目。
这对现在的本地计算机运行。 在命令行上input计算机名称并在远程计算机上运行并不难。 或者,您可以在每台机器上本地运行它。
运行脚本后,您需要重新启动计算机才能使更改生效。 如果您在Windows Vista或Windows 7上运行此操作,请注意它必须在“高架”环境中运行。 (它是在Windows 7上开发的,在Windows XP上正常工作…)
这应该解决你。
我在一段时间内没有做过这样的事情,但是我相信改变它的方法会因每个NIC卡而有所不同,甚至可能由每个版本的NIC驱动程序改变。
海事组织最好的办法来处理它将是在registry中进行更改。 如果你有十几个PC的型号,它可能不那么难,否则,乌克。
WMI脚本可能是最好的select。
这是一个例子 ,让你开始,它读取网卡信息。 将它们设置为远程计算机很简单 – 将computernamevariables更改为数组,循环遍历它们,然后调用set方法而不是get方法。
在serverfault上有几个WMI脚本的例子。
我会在这里反对这个stream程,并build议你亲自做出改变。 将新设备预先configuration为与旧设备(100 / full或其他)相同的fubar设置,然后重新设置networking设备和计算机。 这是一个非常令人讨厌的工作,但最好确保一切正常,而且你只需要做一次。
要犯错是人为的,要真正把事情弄糊涂需要一个脚本。