How to show network card speed/duplex setting in CLI

Home Forums Other Misc How to show network card speed/duplex setting in CLI

This topic contains 4 replies, has 3 voices, and was last updated by Avatar huntsman 2 years ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
  • Avatar

    Some of our client workstation have been hard coded to 100 full, instead of Auto long time ago by our previous network admin. I would like to change it back to Auto. It would be a pain to walk to 500 machine individually.

    Is there a way that I can retrive the NIC setting with a command or registry key?


    Re: How to show network card speed/duplex setting in CLI

    I hope all 500 machines does not have to much different NIC models?

    You can find, for the interfaces, the specific hardware model setting-names and -values in the #### subkeys under this registrykey:

    Create a ini file (SpdDplx.ini) for the setting per NIC you like:

    ;Broadcom 570x Gigabit Integrated Controller

    ;3Com EtherLink Server 10/100 PCI (3C980C-TXM)


    Create you own ini file by exploring the registrykey I mensioned.
    The code between [square brackets] must be 8 characters long. The script needs this unique model-ID for finding the right NIC to modify in the correct registry-subkey. The id is lifted from the value of the “ComponentId” item. It is the first 4charachters after “pciven_” and the first 4 characters after “&dev_”. The next line starting with ; is the value of DriverDesc, next line starting with ; is the complete ComponentId item. And next are/is lines without “;” these are the setting going to written to the registry.

    [B]Read more:

    Then this wil be the script:

    Const HKLM = &H80000002

    inputFile = “[COLOR=”Blue”]spddplx.ini[/COLOR]”

    strComputer = “.”
    Set fso = CreateObject(“Scripting.FileSystemObject”)
    Set objRegistry = GetObject(“winmgmts:{impersonationLevel=impersonate}!\” & _
    strComputer & “rootdefault:StdRegProv”)

    sNetPath = “SystemCurrentcontrolsetControlClass{4D36E972-E325-11CE-BFC1-08002be10318}”


    Sub SetSpeedDuplex()
    Dim section, strValue, subkey, arrSubKeys

    objRegistry.EnumKey HKLM, sNetPath, arrSubKeys
    For Each subkey In arrSubKeys
    objRegistry.GetStringvalue HKLM, sNetPath & “” & subkey, “ComponentId”, strValue
    If not isnull(strValue) then
    strValue = lcase(strValue)
    section = left(replace(replace(strValue, “pciven_”, “”), “&dev_”,””), 8)
    ReadDuplexIni section, subkey
    End if
    End Sub

    Sub ReadDuplexIni(section, subkey)
    Dim ini, line, file

    file = chr(34)& inputFile &chr(34)
    If fso.FileExists(file) Then
    Set ini = fso.OpenTextFile(file, 1, False)
    Do While ini.AtEndOfStream = False
    line = ini.ReadLine
    If lcase(line) = “[” & lcase(section) & “]” Then
    line = ini.ReadLine
    Do While Left(line, 1) “[”
    If left(line, 1) “;” and len(line) > 0 Then
    UpdateReg line, subkey
    End If
    If ini.AtEndOfStream Then Exit Do
    line = ini.ReadLine
    Exit Do
    End If
    End If
    End Sub

    Sub UpdateReg(line, subkey)
    Dim lRC

    key = split(line, “=”)
    lRC=objRegistry.SetStringValue(HKLM, sNetPath & “” & subkey, key(0), key(1))
    End Sub

    In the script you must enter the right full sharedpath to the SpdDplx.ini inputFile, so you will be able to use the script as a computer_startup_script in a GPO.



    Re: How to show network card speed/duplex setting in CLI

    Thank you so much. That’s really helpful.


    Re: How to show network card speed/duplex setting in CLI

    Glad to hear.
    I hope that there is not to much difference between the NIC on the 500 workstations.

    Maybe some useful information about the SpdDplx.ini file;

    The [8-character] ID is nesserary to reconize the vendors-id and the unique NIC-model-id to connect to the the right subkey and change the vendor specific values for that specific card in that subkey.

    It appears to me (if I look at the examples in the link), that the card model-ID in the ‘8-character-ID’ only is nessesary to tell a difference between newer and older NICs from vendor 3Com. One model is using other registry items and values then the other.
    Other vendors seems always have been using a same named, and only one, item to set the speed.

    So if in your case each vendor of the NIC on the workstations uses everytime the same item-name in the registry for all of its card models to set the speed value, then you be able to shorten the 8-character ID to a 3 character ID.
    Then istead of the 2nd-line “;value of ‘DriverDesc'” you can use the “;value of ‘ProviderName'”. And the 3rd-line just static information: “;LAN NIC”. (the lines starting with ; are for you informationj only, these lines will be skipped by the script)

    The bennefit of shorten the total ID to only the vendors unique ID is that now you have to make only one entry per vendor in the ini file, instead of per different NIC-model. That can save you a lot of time to write the ini file and collecting all the information from each computer.

    When you do change the ID format in the ini file then you must! also adjust the script line: 27
    section = left(replace(replace(strValue, “pciven_”, “”), “&dev_”,””), 8 )
    section = left(replace(replace(strValue, “pciven_”, “”), “&dev_”,””), 3)



    Hi there,

    So I have over 8000 machines to change from 100 Full to Auto. We are using SCCM to manage the machines. We have tried the script but having issues

    I have the following in the .ini file


    In the registry SpeedDuplex is named as *SpeedDuplex but added *SpeedDuplex or SpeedDuplex is not changing the value from 4 to 0.

    I have used both the following

    section = left(replace(replace(strValue, “pciven_”, “”), “&dev_”,””), 8)
    section = left(replace(replace(strValue, “pciven_”, “”), “&dev_”,””), 3)

Viewing 5 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic.