Aqui está um script para fazer o que você está procurando. Você precisará fazer um pouco de "lição de casa" para fazê-lo funcionar, no entanto:
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
Você precisará localizar o valor "DriverDesc" para cada tipo de placa de rede que deseja alterar. (Olhe no registro sob o REG_DEVICE_PATH em cada uma das subchaves lá para encontrar os vários valores de DriverDesc). Incluímos instruções para um controlador Broadcom 57xx no script. Você precisará identificar o nome do valor do registro e a configuração de valor para cada tipo de NIC e, em seguida, adicionar entradas como aquelas nas linhas 11-15 para cada tipo de NIC.
Isso é executado no computador local agora. Não seria muito difícil fazer com que o nome do computador ficasse na linha de comando e fosse executado em computadores remotos. Como alternativa, você pode apenas executá-lo localmente em cada máquina.
Você precisará reinicializar a máquina depois que o script for executado para que a alteração entre em vigor. Se você estiver executando isso no Windows Vista ou no Windows 7, saiba que ele deve ser executado em um contexto "Elevado". (Ele foi desenvolvido no Windows 7 e funciona bem no Windows XP ...)
Isso deve resolver você.